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

时间:2017-04-03 22:38:00

标签: python multithreading locking python-asyncio

让我们假设我有一个带有asyncio事件循环和其他线程运行的线程。

我可能不得不处理具有锁定机制的线程之间的同步。但锁定可能会阻止协程...并且没有其他任务(在asyncio线程中)将同时运行。

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

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

1 个答案:

答案 0 :(得分:1)

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

def synchronous_function():
    with synchronous_lock:
        # Do something

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