Python apply_async方法是否总是在进程可用时分配进程?
我正在使用python的多处理模块进行一些分析。具体来说,我使用一个池和Python apply_async方法是否总是在进程可用时分配进程?,python,asynchronous,multiprocessing,pool,Python,Asynchronous,Multiprocessing,Pool,我正在使用python的多处理模块进行一些分析。具体来说,我使用一个池和apply_async方法来计算大量变量的一些结果。计算结果所需的时间因输入的不同而大不相同,这让我想知道池是否会A)在调用apply\u async时立即为每个输入分配一个进程,或者B)在进程准备就绪时分配进程。我担心的是A)可能意味着池的一个进程可能被分配给几个“重”输入,因此完成所需的时间比需要的时间长 我试着运行下面的代码,每次运行都得到了相似的结果( import multiprocessing as mp imp
apply_async
方法来计算大量变量的一些结果。计算结果所需的时间因输入的不同而大不相同,这让我想知道池是否会A)在调用apply\u async
时立即为每个输入分配一个进程,或者B)在进程准备就绪时分配进程。我担心的是A)可能意味着池的一个进程可能被分配给几个“重”输入,因此完成所需的时间比需要的时间长
我试着运行下面的代码,每次运行都得到了相似的结果(
import multiprocessing as mp
import numpy as np
import time
def foo(x):
if x % 4 == 0:
time.sleep(1) # Simulating a large workload
else:
time.sleep(.1) # Simulating a small workload
return 2*x
if __name__ == '__main__':
for _ in range(20):
with mp.Pool(processes=4) as pool:
jobs = []
now = time.time()
vals = list(range(1, 9))
np.random.shuffle(vals)
for x in vals:
jobs.append(pool.apply_async(foo, args=(x,)))
results = [j.get() for j in jobs]
elapsed = time.time() - now
print(elapsed)