[英]How to execute function parallel : Python
我正在尝试使用多处理并行执行以下代码,但没有得到正确的输出。
1和5的迭代应该并行进行
from multiprocessing import Pool
def func1(x):
i = x
while i < 10:
print(str(i)+" fun1")
i +=1
if __name__ == '__main__':
pool = Pool(processes=1)
pool.map(func1, [1,5])
我得到的结果是:发生了更多的迭代
1 fun1 2 fun1 3 fun1 4 fun1 5 fun1 6 fun1 7 fun1 8 fun1 9 fun1 5 fun1 6 fun1 7 fun1 8 fun1 9 fun1
预期的输出:两次迭代应并行发生
1娱乐1 5娱乐1 2娱乐1 6娱乐1 3娱乐1 7娱乐1 4娱乐1 8娱乐1 5娱乐1 9娱乐1 6娱乐1 7娱乐1 8娱乐1 9娱乐1
由于全局解释器锁定,您期望的没有发生。 看看: https : //wiki.python.org/moin/GlobalInterpreterLock
我无法用您的代码复制您的结果。 我得到了预期的行为(请注意在“ if”语句之前调用“ func1”):
1有趣1 2有趣1 3有趣1 4有趣1 5有趣1 6有趣1 7有趣1 8有趣1 9有趣1 1有趣1 2有趣1 3有趣1 4有趣1 5有趣1 6有趣1 7有趣1 8有趣1 9有趣1 5有趣1 6有趣1 7有趣1 8有趣1 9有趣1
由于某种原因,您要调用func1(1)3次。
无论如何,您仅启动1个进程,因此执行将是串行的。 您需要多个进程来并行执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.