我正在尝试以下代码:
from multiprocessing import Pool
def f(x):
return x
if __name__ == '__main__':
p = Pool(5)
print(p.map(f, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13]))
据我了解,这5个处理器可以0, 1, 2, 3, 4
执行操作。如果处理器1完成工作,5
在其余处理器繁忙时立即得到执行,1,2,3,4
还是为所有处理器完成代码,以便下一批处理器一起工作5, 6, 7, 8, 9
,依此类推。如果稍后发生,我该如何实现上述代码,以便在处理器空闲时立即为其分配新的工作?
如何测试实施?
线程池立即生成一个新线程(添加到您的示例中)。请注意线程4花费了足够长的时间以使第12个任务能够启动。
附注:我刚刚注意到您忘记了10。
from multiprocessing import Pool
import time
import random
def f(x):
print "Enter %s" % x
time.sleep( random.randrange(1,100,1)/10.0 )
print "Exit %s" % x
return x
if __name__ == '__main__':
p = Pool(5)
print(p.map(f, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13]))
Enter 0
Enter 1
Enter 2
Enter 3
Enter 4
Exit 0
Enter 5
Exit 3
Enter 6
Exit 2
Enter 7
Exit 5
Enter 8
Exit 1
Enter 9
Exit 6
Enter 11
Exit 11
Enter 12
Exit 4
Enter 13
Exit 7
Exit 12
Exit 9
Exit 8
Exit 13
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句