【发布时间】:2017-11-07 19:45:43
【问题描述】:
我有一个数据数组要处理和处理,这些数据执行时间很长(1-2 分钟)并且需要大量内存进行计算。
raw = ['a', 'b', 'c']
def handler():
# do something long
由于处理程序需要大量内存,我想在单独的子进程中执行它并在执行后将其杀死以释放内存。类似于下面的 sn-p:
from multiprocessing import Process
for r in raw:
process = Process(target=handler, args=(r))
process.start()
问题是这种方法会导致立即运行len(raw) 进程。这并不好。
此外,不需要在子流程之间交换任何类型的数据。因此,只需运行它们。
因此,最好同时运行几个进程并在现有进程完成后添加一个新进程。
如何实现(如果可能的话)?
【问题讨论】:
-
在进程之间提供睡眠时间有帮助吗?
-
为什么不在循环中调用
process.join()?这样您就可以在每个过程之后等待。 -
@ChetanVasudevan,理论上可以,但我想这样的解决方案并不优雅,因为处理程序的执行时间不是恒定的
标签: python-3.x python-multiprocessing