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

Why Python multiprocessing is running sequencially?

我在下面得到了一些非常简单的代码。 #!/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()

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

当我运行上面的代码时,输​​出如下。从作业 25 开始。整个过程 运行ning 就像一个连续的 process.Because 每 10 秒在作业 24 之后有输出。直到作业 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]))