Python 3.x 无限循环;递归的;异步
我是Python3 asyncio的新手 我有一个不断从websocket连接检索消息的函数 我想知道是应该使用Python 3.x 无限循环;递归的;异步,python-3.x,python-asyncio,Python 3.x,Python Asyncio,我是Python3 asyncio的新手 我有一个不断从websocket连接检索消息的函数 我想知道是应该使用while True循环还是异步IO。以递归的方式确保未来的 哪一个是首选还是无关紧要 示例: async def foo(websocket): while True: msg = await websocket.recv() print(msg) await asyncio.sleep(0.0001) 或 async def
while True
循环还是异步IO。以递归的方式确保未来的
哪一个是首选还是无关紧要
示例:
async def foo(websocket):
while True:
msg = await websocket.recv()
print(msg)
await asyncio.sleep(0.0001)
或
async def foo(websocket):
msg = await websocket.recv()
print(msg)
await asyncio.sleep(0.0001)
asyncio.ensure_future(foo(websocket))
出于两个原因,我建议使用迭代变量:
if
和while
来模拟代码的执行。如果您想将代码更改为(例如)在现有循环的周围添加一个外部循环,或者在循环之后添加一些代码(例如,另一个循环),那么在非递归版本中,这将非常容易asyncio.sure\u future(foo(websocket))
为每个新迭代实例化一个新的协同程序对象和一个全新的任务。虽然两者都不是特别重,但在其他条件相同的情况下,最好避免不必要的分配