Python 如何调试多进程设置中滥用threading.lock的情况?
我正在优化一个内容管道,在尝试多处理时,我有一个不好的惊喜:运行时间翻了一番,使用runsnake,我意识到90%的时间都花在threading.lock上Python 如何调试多进程设置中滥用threading.lock的情况?,python,performance,debugging,locking,multiprocessing,Python,Performance,Debugging,Locking,Multiprocessing,我正在优化一个内容管道,在尝试多处理时,我有一个不好的惊喜:运行时间翻了一番,使用runsnake,我意识到90%的时间都花在threading.lock上 我认为一些资源是跨进程共享的(我怀疑sqlalchemy对象),我想检查一下这个假设。但我不知道怎么做。您知道如何检查吗?您是在使用多个进程,还是在使用多个线程?或者,如果两者都使用,如何组合它们?我使用应用程序顶层多处理中的pool.map。这一层下不应该有线程,但我不能确定:我在这里的部分职责是将代码库放回正确的轨道。我怀疑至少有一个(
我认为一些资源是跨进程共享的(我怀疑sqlalchemy对象),我想检查一下这个假设。但我不知道怎么做。您知道如何检查吗?您是在使用多个进程,还是在使用多个线程?或者,如果两者都使用,如何组合它们?我使用应用程序顶层多处理中的pool.map。这一层下不应该有线程,但我不能确定:我在这里的部分职责是将代码库放回正确的轨道。我怀疑至少有一个(因此是奇怪的分析),但我不知道如何确定哪个模块使用它们。