Python 在asyncio模块中,如何使用我们希望继续使用的变量打破事件循环
我是python中使用Asyncio模块的新手。假设我想异步运行两个函数。函数_A()基本上是在运行循环,需要在特定条件下使用“if”语句停止循环 我不确定eventloop到底是如何工作的,只知道当我运行loop.stop()时,它会杀死内核并重新启动它,这样在中断eventloop后我想要保留的“lst”将在内核被杀死后自动删除 以下是我想做的:Python 在asyncio模块中,如何使用我们希望继续使用的变量打破事件循环,python,python-asyncio,Python,Python Asyncio,我是python中使用Asyncio模块的新手。假设我想异步运行两个函数。函数_A()基本上是在运行循环,需要在特定条件下使用“if”语句停止循环 我不确定eventloop到底是如何工作的,只知道当我运行loop.stop()时,它会杀死内核并重新启动它,这样在中断eventloop后我想要保留的“lst”将在内核被杀死后自动删除 以下是我想做的: global lst lst = [] import asyncio async def function_A():
global lst
lst = []
import asyncio
async def function_A():
for i in range(0,100):
lst.append(i)
if len(lst) == 10:
loop.stop() # <== this doesn't work well
async def function_B():
# do something else
loop = asyncio.get_event_loop()
tasks = asyncio.gather(function_A(), function_B())
loop.run_until_complete(tasks)
## break out of the event loop ##
# lst is saved and continue to another process with "lst"
global lst
lst=[]
导入异步
异步定义函数_A():
对于范围(0100)内的i:
一、附加(一)
如果len(lst)==10:
loop.stop()#不要调用loop.stop()
尝试使用loop.close()
以下内容将停止循环
停止事件循环
而关闭操作也将放弃所有挂起的任务
关闭事件循环
调用此函数时,循环不得运行。任何悬而未决的
回调将被丢弃
此方法清除所有队列并关闭执行器,但不会
不要等待执行者完成
这种方法是幂等的和不可逆的。不应使用其他方法
在事件循环关闭后调用
或者您可以返回而不是调用上述函数,并等待function\u B
返回。
只有关闭循环。如果要从函数返回,只需使用返回
。事件循环上的stop
方法用于停止异步任务的处理。它不会对当前正在运行的任务产生影响,只会阻止事件循环执行后续任务。你的循环不等待任何东西,因此它首先不允许并发执行。@user4815162342你的意思是将return
放在循环之外吗?不,我的意思是退出函数的方法是从它返回,loop.stop
不会神奇地为你做这件事,因为它没有那种能力。