Skip to main content
 首页 » 编程设计

python之我如何计算 Python 中的字节码,以便我可以适本地修改 sys.setcheckinterval

2025年05月04日20sxdcgaq8080

我有一个使用工作队列和线程的端口扫描应用程序。

它使用简单的 TCP 连接并花费大量时间等待数据包返回(最多半秒)。因此线程不需要完全执行(即前半部分发送数据包、上下文切换、执行操作、返回到有网络数据等待它的线程)。

我怀疑我可以通过修改 sys.setcheckinterval 的默认值 100 来提高性能(在切换到另一个线程之前最多可以执行 100 个字节码)。

但是在不知道线程或函数中实际执行了多少字节码的情况下,我盲目地猜测值,测试和依赖测试显示出可测量的差异(这很困难,因为正在执行的代码量很少; 一个简单的套接字连接,因此网络抖动可能比更改 sys.setcheckinterval 更能影响任何测量。

因此我想找出在某些代码执行中有多少字节码(即一个函数或线程执行中的字节码总数)这样我就可以更明智地猜测将 sys.setcheckinterval 设置为什么。

请您参考如下方法:

对于更高级别(方法、类)而言,dis module应该有帮助。

但如果需要更细的颗粒,tracing将不可避免。跟踪确实逐行运行,但 explained here是在字节码级别深入研究的好方法。向 Ned Batchelder 致敬。