【问题标题】:python asyncio: how to best use lock threads?python asyncio:如何最好地使用锁线程?
【发布时间】:2017-08-28 23:00:49
【问题描述】:

假设我有一个带有异步事件循环的线程和其他线程正在运行。

例如,我可能必须使用锁机制处理线程之间的同步。但是锁可能会阻塞协程......并且没有其他任务(在异步线程中)将同时运行。

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

准确地说:我不是指现有的异步锁原语。

【问题讨论】:

  • 我们当然需要一个例子。现在还不清楚你为什么要混淆线程和异步;你要锁定什么

标签: python multithreading locking python-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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-16
    相关资源
    最近更新 更多