Python 线程和事件循环之间的共享锁

Python shared lock between Threads and EventLoops

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

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

我该如何实施?

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

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

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