我正在开发一个已重构多次的个人项目。它开始使用多线程,然后部分使用 asyncio,现在又回到主要是单线程。
由于所有这些更改,我希望删除和清理代码中的许多 threading.Lock() 以防止将来出现问题。
如何轻松找出应用程序运行时哪些锁正在使用并被多个线程命中?
最佳答案
如果我在这种情况下发现了这一点,我会尝试用包装器替换锁,当发生不良行为时,该包装器会为我进行计数(或打印某些内容,引发异常等)。 Python 很 hacky,所以我可以简单地创建一个函数并覆盖原始的 threading.Lock 来完成工作。这可能需要一些仔细的实现,例如,捕获所有可能的锁定和解锁路径。
但是,您必须小心,即使如此,您也可能不会执行所有可能的代码路径,因此永远不知道是否真的删除了所有“错误”。
关于python - 有没有一种方法可以查明Python线程锁是否被多个线程使用过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55751007/