<p><strong>在这种特殊情况下,您可以简单地使用<code>ThreadPoolExecutor</code>,asyncio在<code>.run_in_executor</code>中的hood下使用它(但在您的示例中还添加了多余的代码行/循环创建等)。</p>
<pre><code>from concurrent.futures import ThreadPoolExecutor, wait
# create the executor outisde of the view with the number of workers you may need
executor = ThreadPoolExecutor(max_workers=2)
def reco_ibm(lang):
return(r.recognize_ibm(audio, key, secret language=str(lang), show_all=True))
def djangoview(request, language1, language2):
r = sr.Recognizer()
with sr.AudioFile(path.join(os.getcwd(), "audio.wav")) as source:
audio = r.record(source)
# then use it pretty trivially:
futures = []
for lang in [language1, language2]:
futures.append(executor.submit(reco_ibm, lang)
completed, pending = wait(futures)
# `pending` will always be empty here (see the docs on wait)
result1, result2 = [i.resut() for i in completed]
# do whatever you want with results etc.
</code></pre>
<p>见<a href="https://docs.python.org/3/library/concurrent.futures.html" rel="noreferrer">https://docs.python.org/3/library/concurrent.futures.html</a></p>