繁体   English   中英

如何并行执行函数:Python

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM