擅长:python、mysql、java
<p>这取决于您的问题是否是施加额外约束的更大问题的一部分,但我看不出使用<code>threading</code>的原因。相反,您可以使用在同一事件循环中运行的两个独立的<code>Task</code>,这是异步编程的要点之一:</p>
<pre><code>import asyncio
async def countdown(n, m): # <- coroutine function
print("timer start")
await asyncio.sleep(n)
print("timer stop")
await coro1()
async def coro1():
print("coroutine called")
async def coromain():
print("first")
asyncio.ensure_future(countdown(5, 0)) # create a new Task
print("second")
loop = asyncio.get_event_loop()
loop.run_until_complete(coromain()) # run coromain() from sync code
pending = asyncio.Task.all_tasks() # get all pending tasks
loop.run_until_complete(asyncio.gather(*pending)) # wait for tasks to finish normally
</code></pre>
<p>输出:</p>
^{pr2}$
<p>使用<a href="https://docs.python.org/3/library/asyncio-task.html#asyncio.ensure_future" rel="nofollow noreferrer">^{<cd3>}</a>时,可以在单个操作系统线程内有效地创建一个新的“执行线程”(请参见纤程)。在</p>