我有一个长期运行的多线程程序,我偶尔会想用Profile.runcall调用一个函数并将数据转储到一个文件中。
hotshot documentation州:Note: The hotshot profiler does not yet work well with threads. It is useful to use an unthreaded script to run the profiler over the code you’re interested in measuring if at all possible.
但是,我测试多个线程同时分析一个函数,我没遇到任何问题。在我的例子中,被分析的函数都是自包含的,并且在执行期间不会产生任何其他线程。我确保每个Profile
对象都有自己的文件,这样它们就不会互相破坏。
所以我的猜测是关于多线程的警告意味着如果被分析的函数本身会产生额外的线程,我会遇到问题。当我分析一个确实产生其他线程的测试函数时,生成的线程不会被分析。但是,这似乎仍然没有引起任何问题,因为被分析的函数似乎工作正常。
有人可以确认或反驳热门在多线程程序中运行是否安全?我不想部署可能在以后崩溃的东西,即使它似乎通过了我的初步测试。