当进程实例化锁定执行时,Python多处理

时间:2017-02-22 18:23:54

标签: python multithreading multiprocessing

我有一些执行非冲突任务的python代码,由于这种并行性,不会出现竞争条件。我只是试图提高处理速度,我有4个文件,而不是一次只读一个,我想打开所有四个文件并从中读取/编辑数据他们同时。

我已经在这里读了几个问题,详细说明由于全局解释器锁,python中的多线程是不可能的,但多处理可以解决这个问题。为了记录我的代码完全符合它在我从终端在不同终端中运行四次时的意义 - 我猜这是"多处理"但是我' ; d喜欢更清晰的程序化解决方案。

数据集很大,因此可以假设只要一个"过程"给予翻译,它基本上被锁定了很长一段时间: 例如:

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个核心

0 个答案:

没有答案