我目前正在为用Python编写的在线服务开发一个抽样分析工具。
到目前为止,我的方法是拥有一个专用线程,该线程定期查看所有正在运行的Python线程并分析其当前帧。代码运行良好但遗憾的是它并没有反映(C)Python的协作线程性质,其中只有一个给定的线程在给定时间实际运行(并且具有GIL)。我想在每个循环中只获取最后一个运行线程的帧。
我已经看到其他工具使用signal.setitimer
定期调用进程上的信号并使用thread.get_ident()
获取当前线程标识符。因为显然我们喜欢生活在痛苦的世界中,我们必须使该工具在Windows上运行,signal.setitimer
不可选。
Python中有没有办法从另一个线程获取以前运行的线程标识符?如果可以帮助我的话,写一个C扩展名也没关系。