进程实例化锁定执行时的Python多进程

2024-06-25 23:50:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些执行非冲突任务的python代码,这种并行性不会导致任何竞争条件。我只是想提高处理速度,我有4个文件,而不是一次读取一个文件,我想打开所有4个文件,同时读取/编辑其中的数据

我在这里读到了一些问题,详细说明了由于全局解释器锁,python中的多线程是不可能的,但是多处理解决了这个问题。作为记录,我的代码做的正是它的本意,当我在不同的终端中从终端运行它四次时-我猜这是“多处理”,但是我想要一个更干净的编程解决方案

数据集很大,因此可以假设一旦给解释器一个“进程”,它就基本上被锁定了很长一段时间: 示例:

import multiprocessing

def worker():
    while true:
        #do some stuff
    return

if __name__ == '__main__':
    jobs = []
    for i in range(5):
        p = multiprocessing.Process(target=worker)
        jobs.append(p)
        p.start()

这给了我一个问题,上面的程序将执行第一个进程,然后再实际地启动第二个进程,直到第一个进程的执行完成,使它们一个接一个地运行

有没有一种方法可以有效地执行worker X的次数,或者同时启动它们,或者在它们全部启动之前阻止它们运行我的操作系统可以访问8个内核


Tags: 文件数据代码终端编辑进程记录jobs