Python 多处理防止关闭到其他进程

Python multiprocessing prevent switching off to other processes

在Python中使用multiprocessing模块时,有没有办法防止进程在一定时间内切换到另一个进程?

我生成了大约 50 个不同的子进程来从数据库中检索数据(每个进程 = 数据库中的每个 table),在查询和过滤数据后,我尝试将输出写入 excel 文件.

由于所有的进程都有相似的步骤,所以它们都在相似的时间结束写入进程,当然由于我是写入单个文件,所以我有一个锁可以防止多个进程写入文件.

但问题是,与我在单个进程中写入相同数量的数据时的写入过程相比,写入过程似乎花费了很长时间(至少慢了10倍)

我猜其中一个原因可能是在写入时,cpu 不断地切换到其他进程,这些进程都卡在互斥锁上,然后才回到正在运行的进程唯一一个活跃的。我猜上下文切换会浪费大量时间,因为有很多进程要在

之间来回切换

我想知道是否有一种方法可以锁定进程,使得对于代码的特定部分,进程之间不会发生上下文切换

或任何其他加速此过程的建议?

您可以提高进程的优先级(转到任务管理器,右键单击该进程并提高其进程优先级)。但是 OS 无论如何都会进行上下文切换,您的进程没有比其他进程更好的声明 OS.

不要使用锁定,也不要从多个进程写入;让子进程 return 输出到父进程(例如通过标准输出),并让它等待进程 join 读取它。我不是 100% multiprocessing API 但你可以让父进程休眠并等待 SIGCHLD 然后才从退出的子进程的标准输出中读取数据,然后写入它到你的输出文件。

这样一来,只有一个进程正在写入文件,您不需要任何繁忙的循环或其他任何东西。会简单很多,效率也会高很多。