多重处理:执行顺序

扎南

我正在尝试以下代码:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章