2017-04-03 85 views
0

讓我們假設我有一個線程與一個asyncio事件循環和其他線程運行。python asyncio:如何最好地使用鎖定線程?

例如,我可能不得不處理帶鎖機制的線程之間的同步。但是這個鎖可能會阻塞協程......並且沒有其他任務(在asyncio線程中)會同時運行。

解決方案是什麼?我的猜測是,一種會是異步的鎖定原子可以完成這項工作,但據我所知它並不存在。

準確地說:我沒有引用現有的asyncio鎖定原語。

+0

我們當然需要一個例子。現在還不清楚爲什麼混合線程和asyncio;你要鎖定什麼? –

回答

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)