python asyncio:如何最好地使用锁定线程?
问题描述:
让我们假设我有一个线程与一个asyncio事件循环和其他线程运行。python asyncio:如何最好地使用锁定线程?
例如,我可能不得不处理带锁机制的线程之间的同步。但是这个锁可能会阻塞协程......并且没有其他任务(在asyncio线程中)会同时运行。
解决方案是什么?我的猜测是,一种会是异步的锁定原子可以完成这项工作,但据我所知它并不存在。
准确地说:我没有引用现有的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)
我们当然需要一个例子。现在还不清楚为什么混合线程和asyncio;你要锁定什么? –