擅长:python、mysql、java
<p>有几种不同的方法可以解决这个问题。最简单的方法是使用<code>multiprocessing.Pool</code>和<code>apply_async</code>函数:</p>
<pre><code>from multiprocessing import Pool
def func1():
x = 2
return x
def func2():
y = 1
return y
def func3():
z = 5
return z
if __name__ == '__main__':
with Pool(processes=3) as pool:
r1 = pool.apply_async(func1, ())
r2 = pool.apply_async(func2, ())
r3 = pool.apply_async(func3, ())
print(r1.get(timeout=1))
print(r2.get(timeout=1))
print(r3.get(timeout=1))
</code></pre>
<p><code>multiprocessing.Pool</code>是一个非常有用的构造,它通过设置管道和队列以及其他需要的东西来处理进程之间的底层通信。最常见的用例是使用<code>.map</code>函数将它与不同的数据一起使用到同一个函数(分配工作)。但是,它也可以用于不同的函数,例如像我在这里所做的<code>.apply_async</code>构造。</p>
<p>但是,这在解释器中不起作用,但必须存储为<code>.py</code>文件并使用<code>python filename.py</code>运行。</p>