<p>您可以使用asyncio。(文件可在<a href="https://docs.python.org/3/library/asyncio.html" rel="nofollow noreferrer">here</a>找到)</p>
<pre><code>import asyncio
def background(f):
def wrapped(*args, **kwargs):
return asyncio.get_event_loop().run_in_executor(None, f, *args, **kwargs)
return wrapped
@background
def your_function(argument):
#code
</code></pre>
<p>现在,无论何时调用此函数,都将并行运行,而不会将主程序置于等待状态。您也可以使用它来并行化for循环。当调用for循环时,虽然循环是顺序的,但每次迭代都会在解释器到达主程序时与主程序并行运行。在您的情况下,只需添加<code>@background</code>签名即可将函数包装为在后台运行,如下所示:</p>
<pre><code>@background
def extract_single(curlst[y], tempst[x]):
#function definition
</code></pre>
<p>然后,只需向函数定义中添加<code>@background</code>签名,就可以在不进行任何修改的情况下使用代码并行运行</p>
<h2>例如:</h2>
<pre><code>@background
def your_function(argument):
time.sleep(5)
print('function finished for '+str(argument))
for i in range(10):
your_function(i)
print('loop finished')
</code></pre>
<p>这将产生以下输出:</p>
<pre><code>loop finished
function finished for 4
function finished for 8
function finished for 0
function finished for 3
function finished for 6
function finished for 2
function finished for 5
function finished for 7
function finished for 9
function finished for 1
</code></pre>