我有一个倒计时的脚本,看起来像这样:
import time, threading, asyncio
def countdown(n, m):
print("timer start")
time.sleep(n)
print("timer stop")
yield coro1
async def coro1():
print("coroutine called")
async def coromain():
print("first")
t1 = threading.Thread(target=countdown, args=(5, 0))
t1.start()
print("second")
loop = asyncio.get_event_loop()
loop.run_until_complete(coromain())
loop.stop()
我想让它做的很简单:
^{pr2}$但是,当我运行此代码时,它会输出:
Run coromain
Print "first"
Print "second"
exit
我很困惑它为什么会这样。谁能解释一下我做错了什么吗?在
这取决于您的问题是否是施加额外约束的更大问题的一部分,但我看不出使用
threading
的原因。相反,您可以使用在同一事件循环中运行的两个独立的Task
,这是异步编程的要点之一:输出:
^{pr2}$使用^{} 时,可以在单个操作系统线程内有效地创建一个新的“执行线程”(请参见纤程)。在
经过一番挖掘,这是一个解决办法。它可能不漂亮,但很管用:
不幸的是,它不适用于我的特定用例,但我认为它可能有用。在
相关问题 更多 >
编程相关推荐