通常,最常见的问题是创建了池但未将其关闭。
我知道保证关闭池的最好方法是使用try / finally子句:
try: pool = Pool(ncores) pool.map(yourfunction, arguments)finally: pool.close() pool.join()
如果您不想挣扎
multiprocessing,我写了一个简单的程序包
parmap,它包装了多处理程序,使我(甚至可能是您)的生活更加轻松。
pip install parmap
import parmapparmap.map(yourfunction, arguments)
在parmap使用情况部分:
简单的并行示例:
import parmap
y1 = [myfunction(x, argument1, argument2) for x in mylist]
y2 = parmap.map(myfunction, mylist, argument1, argument2)
y1 == y2遍历元组列表:
# You want to do:
z = [myfunction(x, y, argument1, argument2) for (x,y) in mylist]
You want to do:
z = parmap.starmap(myfunction, mylist, argument1, argument2)listx = [1, 2, 3, 4, 5, 6]
In parallel:
listy = [2, 3, 4, 5, 6, 7]
param = 3.14
param2 = 42
listz = []
for (x, y) in zip(listx, listy):
listz.append(myfunction(x, y, param1, param2))listz = parmap.starmap(myfunction, zip(listx, listy), param1, param2)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)