2017-04-03 8 views
0

asyncio 이벤트 루프 및 다른 스레드가 실행중인 스레드가 있다고 가정 해 보겠습니다.파이썬 asyncio : 어떻게 잠금 스레드를 사용 하는가?

예를 들어 잠금 장치가있는 스레드 간의 동기화를 처리해야 할 수도 있습니다. 하지만 자물쇠가 coroutine을 차단할 수 있습니다 ... 그리고 다른 작업 (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)