【发布时间】:2021-01-18 03:18:01
【问题描述】:
我为我的项目复制了以下代码,它对我来说效果很好,但我真的不明白以下代码如何运行我的blocking_function:
@client.event
async def on_message(message):
loop = asyncio.get_event_loop()
block_response = await loop.run_in_executor(ThreadPoolExecutor(), blocking_function)
每次收到消息时都会调用 on_message。如果我收到多条消息,它们将被异步处理。
blocking_function 是一个同步函数,我不想在另一个blocking_function 运行时运行它。那么在blocking_function 中,我应该使用threading.Lock() 还是asyncio.lock()?
【问题讨论】:
-
如果
blocking_function没有用async def定义,你不能在其中使用async或await,所以你必须使用threading.Lock。
标签: python-3.x multithreading asynchronous parallel-processing python-asyncio