gpt4 book ai didi

python - 为什么 Python 多处理是顺序运行的?

转载 作者:太空狗 更新时间:2023-10-30 01:13:30 24 4
gpt4 key购买 nike

我在下面得到了一些非常简单的代码。 #!/usr/bin/python 来自多处理导入池 导入时间

def worker(job):
if job in range(25,30):
time.sleep(10)
print "job:%s" %job
return (job)

pool = Pool(processes=10)
result = []

for job in range(1, 1000):
result.append(pool.apply_async(worker(job)))
pool.close()
pool.join()

如您所见,我有一个 worker 使用多处理来处理 1000 个作业。如果工作是 25-30,那么 worker 将睡 10 秒。这是尝试模拟时间/资源成本作业。

当我运行上面的代码时,输​​出如下所示。从作业 25 开始。整个过程像一个顺序过程一样运行。因为在作业 24 之后每隔 10 秒就会有输出。直到作业 30 完成。

但是为什么?多处理进程不应该同时运行吗?

[root@localhost tmp]# ./a.py 
job:1
job:2
job:3
job:4
job:5
job:6
job:7
job:8
job:9
job:10
job:11
job:12
job:13
job:14
job:15
job:16
job:17
job:18
job:19
job:20
job:21
job:22
job:23
job:24


job:25
job:26
...

最佳答案

因为您在实例化时调用它。您应该将可调用对象和参数(而不是结果)传递给 apply_async。

result.append(pool.apply_async(worker, [job]))

关于python - 为什么 Python 多处理是顺序运行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34744493/

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