在循环的每次迭代中运行一个函数作为python中的新进程

时间:2016-03-18 17:10:26

标签: python multiprocessing

我有这个:

from multiprocessing import Pool

pool = Pool(processes=4)

def createResults(uniqPath):
    *(there is some code here that populates a list - among other things)*

for uniqPath in uniqPaths:
    pool.map(createResults, uniqPath)

pool.close()
pool.join()

我不知道它是否可能,但是我可以运行在该循环中调用的createResults函数作为每次迭代的新进程吗?

我使用400万行文件填充列表,并且需要24小时才能运行。 (显然上面的代码不起作用)

谢谢!

1 个答案:

答案 0 :(得分:1)

而不是:

for uniqPath in uniqPaths:
    pool.map(createResults, uniqPath)

这样做:

pool.map(createResults, uniqPaths)

您必须在iterable本身上使用map才能以并发方式运行 请记住 - 填充列表意味着列表不会在进程之间共享,如果使用Array(),则确保它是进程安全的。