Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python线程的剖析_Python_Multithreading - Fatal编程技术网

Python线程的剖析

Python线程的剖析,python,multithreading,Python,Multithreading,我试图弄清楚如何在我的应用程序中度量几个python线程的性能。我目前有几个任务根据用户输入在不同的线程上执行,我想测量执行时间,甚至每个线程的内存消耗。我曾尝试使用cProfile(在线程的每个实例化上,然后将数据写入一个文件,然后聚合所有结果),但成功率有限。另外,我还有一个额外的问题,就是有一些阻塞IO,这会使我的结果产生偏差。是否有任何方法可以有效地分析我的应用程序 有几种不同的方法来解决这个问题cProfile非常好,它是Python附带的,但是许多人认为多线程分析是一个问题。解决这个

我试图弄清楚如何在我的应用程序中度量几个python线程的性能。我目前有几个任务根据用户输入在不同的线程上执行,我想测量执行时间,甚至每个线程的内存消耗。我曾尝试使用cProfile(在线程的每个实例化上,然后将数据写入一个文件,然后聚合所有结果),但成功率有限。另外,我还有一个额外的问题,就是有一些阻塞IO,这会使我的结果产生偏差。是否有任何方法可以有效地分析我的应用程序

有几种不同的方法来解决这个问题
cProfile
非常好,它是Python附带的,但是许多人认为多线程分析是一个问题。解决这个问题的一种方法是为每个线程运行单独的cProfile实例,然后使用
Stats.add
组合结果

如果这不像您希望的那样有用,那么另一种选择是使用,我已经成功地将其用于一些特殊的多线程情况。它有很好的文档,所以设置起来应该不会有太多麻烦


对于特定于内存的评测,请签出。但是请注意,如果您的代码不好,它可能会创建一些您见过的最大的日志文件

通过使用cProfile,您已经有了一个很好的开始!如果你能解释一下你对cPoCH的“有限的成功”,我们可以帮助解决这个问题,然后继续下去。作为一个不相关的注释,你可能需要考虑多个进程而不是多个线程:如果我在不同的请求中使用<代码> PR= cPr.PrrIror()/代码>,我的系统就是一个Web服务器,这就是所谓的cProfile的独立实例吗?