请问 Python 如何用 asyncio 实现并发操作。
小白初学协程,想使用 websockets
库,但是遇到在携程运行的函数里并发运行的问题。
于是用 asyncio
去模拟连接服务器,连接成功后需要去检查它的状态,和模拟发心跳,他们持续运行,但并不影响后面我用 await
发消息的操作,请问该如何实现。
import asyncio
async def heartbeat():
print('Send ping.')
await asyncio.sleep(2)
print('Get pong.')
async def ensureConnected():
while True:
print('Check connection.')
await asyncio.sleep(1)
print('Connected.')
async def doA():
print('Do A.')
await asyncio.sleep(2)
print('Done A.')
async def run():
print('Start connecting...')
await asyncio.sleep(1)
print('Connection established.')
ensureConnected()
ensureConnected()
await doA()
loop = asyncio.get_event_loop()
loop.run_until_complete(run())
loop.close()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
可以将协程理解为运行在主线程里的多任务时间片(与线程高度相似、其概念早于多线程);
基于asyncio的多任务需要同时运行,使用tasks.gather函数:
返回结果是一个future对象,run_until_complete即可