gpt4 book ai didi

python 池不会按列表中的每个项目运行函数

转载 作者:行者123 更新时间:2023-12-01 15:20:25 26 4
gpt4 key购买 nike

我尝试将池用于多处理目的。检查我的代码:

def func1(x):
print x
if __name__ == "__main__":
myList = ["111","222","333","444"]
p = Pool(processes=4)
res1 = p.map(func1,myList)

我认为导出必须是什么:

222
111
333
444

它给了什么:

3332
122411
44

我做错了什么?

最佳答案

您的代码没有任何问题;它完全符合预期。

如果您认为无论先执行什么,它都应该阻止所有其他执行直到完成,您可能会感到困惑。值得庆幸的是,这不是真的,因为如果是这样,那就不是并行编程了。您正在启动 4 个并行进程,它们都写入标准输出 (stdout),而不考虑优先级,因此您创建了某种可以任意解决的竞争条件。

尝试写入 4 个单独的文件而不是 stdout(参见下面的代码),您将更清楚地看到并行代码的结果;这些文件是同时而不是连续生成的。

def func1(x):
with open('file_{}'.format(x), w) as f:
f.write(x)

if __name__ == "__main__":
myList = ["111","222","333","444"]
p = Pool(processes=4)
res1 = p.map(func1,myList)

关于python 池不会按列表中的每个项目运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59245086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com