【问题标题】:Python shared lock between Threads and EventLoops线程和 EventLoops 之间的 Python 共享锁
【发布时间】:2020-05-13 22:54:49
【问题描述】:

考虑我有一个主线程和一个(或多个异步事件循环)和多个 python 线程同时运行的情况。

我想要一个锁,它在线程内部和事件循环内部都有效。 例如,当在异步 EventLoop 中获取锁时,其他异步循环和线程会等待完全相同的锁。

我应该如何实现这个?

我知道threading.Lockasyncio.Lock。但我不确定是否可以在异步任务中使用threading.Lock,反之亦然。

【问题讨论】:

  • 你为什么同时使用线程和异步?通常不建议同时使用这两个功能。
  • 我知道这听起来不太好,但一个旧库正在使用线程,而另一个项目源代码正在异步工作。我宁愿不使用异步重新实现库。

标签: python multithreading locking python-asyncio


【解决方案1】:

我想到的想法是创建一个新的 Lock 或 Queue 类,它对于每种类型的处理都有两个对象。

但有些人已经实现了这个想法,甚至更多。例如:

【讨论】:

    猜你喜欢
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多