我有这个:
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小时才能运行。 (显然上面的代码不起作用)
谢谢!
答案 0 :(得分:1)
而不是:
for uniqPath in uniqPaths:
pool.map(createResults, uniqPath)
这样做:
pool.map(createResults, uniqPaths)
您必须在iterable本身上使用map才能以并发方式运行
请记住 - 填充列表意味着列表不会在进程之间共享,如果使用Array()
,则确保它是进程安全的。