Python apply_async方法是否总是在进程可用时分配进程?

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

我正在使用python的多处理模块进行一些分析。具体来说,我使用一个池和
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)