<p>如果您的函数主要执行<strong>I/O工作</strong>(以及更少的CPU工作),并且您有Python3.2+,则可以使用<a href="https://docs.python.org/3/library/concurrent.futures.html" rel="noreferrer">ThreadPoolExecutor</a>:</p>
<pre><code>from concurrent.futures import ThreadPoolExecutor
def run_io_tasks_in_parallel(tasks):
with ThreadPoolExecutor() as executor:
running_tasks = [executor.submit(task) for task in tasks]
for running_task in running_tasks:
running_task.result()
run_io_tasks_in_parallel([
lambda: print('IO task 1 running!'),
lambda: print('IO task 2 running!'),
])
</code></pre>
<p>如果您的函数主要执行<strong>CPU工作</strong>(而I/O工作较少),并且您有Python2.6+,则可以使用<a href="https://docs.python.org/3/library/multiprocessing.html" rel="noreferrer">multiprocessing</a>模块:</p>
<pre><code>from multiprocessing import Process
def run_cpu_tasks_in_parallel(tasks):
running_tasks = [Process(target=task) for task in tasks]
for running_task in running_tasks:
running_task.start()
for running_task in running_tasks:
running_task.join()
run_cpu_tasks_in_parallel([
lambda: print('CPU task 1 running!'),
lambda: print('CPU task 2 running!'),
])
</code></pre>