import asyncio
import websockets
from threading import Timer
async def fun():
print("hello, world")
Timer(1, fun).run()
loop = asyncio.get_event_loop()
loop.run_until_complete(fun())
loop.close()
请问一下这个问题是因为什么呢,怎么解决
import asyncio
import websockets
from threading import Timer
async def fun():
print("hello, world")
Timer(1, fun).run()
loop = asyncio.get_event_loop()
loop.run_until_complete(fun())
loop.close()
asynnc/await协程语法是python3.7增加的新特性,尽管3.10都快发布了,但是协程这块还是有很多人不熟悉
基本概念 1. 协程是在单个线程中执行的多个任务
基本概念 2. asynnc/await要成对出现
Timer(1, fun).run()
这行代码做了什么呢
于是出现了 never awaited
的提示
正确的例子:
import asyncio
async def fun(): # async 定义协程
print("hello, ")
await asyncio.sleep(1) # await 等待另一个协程结束
print(" world")
loop = asyncio.get_event_loop() # 从当前线程中创建时间循环
loop.run_until_complete(fun()) # 执行协程,并等待完成
loop.close()
需要注意的是,以上代码只是使用了async/await的语法实现了异步,却没有实现并发
各中差别还需细细体味
协程是线程开销更低,但更复杂的并发编程方式,如果感觉吃力是正常的,建议先从多线程开始学起
如有帮助,还请【采纳】