在我的用Stackless Python编写的服务器中,我偶尔会在5-10秒的持续时间内获得CPU使用率的大峰值。这种情况偶尔会发生,所以我很难追踪到它。
我已经使用cProfile来尝试并确定这些峰值来自何处,但cProfile给出了每个函数花费时间的总体情况。我真正想知道的是,CPU峰值是由于单个微线程中发生的一些处理(并停止了其他微线程),还是有多个微线程进行了大量的处理(即:当每一个都变得活跃时,每个都在做大量的工作)。
在Stackless Python中有没有一种方便的方法连接到调度器,这样我就可以添加一些计时代码了?换句话说,有没有一个函数可以在微线程变得活跃和不活跃时被调用,我可以将其挂钩?
发布于 2011-12-29 02:56:00
我还没有找到一个显式的函数在微线程阻塞/恢复时挂钩,但是因为Channel.receive()通常是阻塞/恢复发生的时候,所以我挂钩了发生的每一个事件。
https://stackoverflow.com/questions/8631091
复制相似问题