Python 在asyncio模块中,如何使用我们希望继续使用的变量打破事件循环

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():

我是python中使用Asyncio模块的新手。假设我想异步运行两个函数。函数_A()基本上是在运行循环,需要在特定条件下使用“if”语句停止循环

我不确定eventloop到底是如何工作的,只知道当我运行loop.stop()时,它会杀死内核并重新启动它,这样在中断eventloop后我想要保留的“lst”将在内核被杀死后自动删除

以下是我想做的:

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
不会神奇地为你做这件事,因为它没有那种能力。