python asyncio:如何最好地使用锁定线程?

问题描述:

让我们假设我有一个线程与一个asyncio事件循环和其他线程运行。python asyncio:如何最好地使用锁定线程?

例如,我可能不得不处理带锁机制的线程之间的同步。但是这个锁可能会阻塞协程......并且没有其他任务(在asyncio线程中)会同时运行。

解决方案是什么?我的猜测是,一种会是异步的锁定原子可以完成这项工作,但据我所知它并不存在。

准确地说:我没有引用现有的asyncio锁定原语。

+0

我们当然需要一个例子。现在还不清楚为什么混合线程和asyncio;你要锁定什么? –

使用loop.run_in_executor在一个线程中运行同步调用:

def synchronous_function(): 
    with synchronous_lock: 
     # Do something 

async def asynchronous_function(): 
    await loop.run_in_executor(None, synchronous_function)