有没有一种方法可以找出多个线程是否曾经使用过Python线程锁?

时间:2019-04-18 17:24:29

标签: python python-3.x multithreading python-multithreading

我正在处理一个已重构多次的个人项目。它开始使用多线程,然后部分使用asyncio,现在又回到主要是单线程。

作为所有这些更改的结果,我在代码中具有多个threading.Lock(),我希望删除它们并进行清理以防止将来出现问题。

如何在应用程序运行时轻松确定正在使用哪些锁并被多个线程击中?

1 个答案:

答案 0 :(得分:1)

如果我发现这种情况,我会尝试用包装器替换该锁,当发生不希望的行为时,该包装器会为我进行计数(或打印一些内容,引发异常等)。 Python很hacky,因此我可以简单地创建一个函数并覆盖原始的threading.Lock来完成工作。这可能需要一些谨慎的实现,例如,抓住所有可能的锁定和解锁途径。

但是,您仍然必须小心,即使如此,您也可能无法使用所有可能的代码路径,因此永远不知道是否真的删除了所有“错误”。