【问题标题】:Does each reactor run in it's own thread?每个反应器都在自己的线程中运行吗?
【发布时间】:2019-09-07 14:51:41
【问题描述】:

分析我扭曲的应用程序,我发现twisted/application/app.py:startReactor 被调用了 496 次。除此之外,我看到线程泄漏:应用程序创建了大约 500 个线程,其中大部分在 FUTEX_WAIT_PRIVATE 中处于空闲状态。在此分析期间,运行了简单的负载测试:~1rps。

这是否意味着代码reactor.run() 的某处泄漏了?我应该从哪里开始挖掘?

【问题讨论】:

    标签: python multithreading twisted reactor resource-leak


    【解决方案1】:

    一般来说,不会。 reactor.run 不启动线程。但是,如果您有一个启动 496 个反应器的应用程序,那么 可能会启动运行每个反应器的线程。

    【讨论】:

    • 我怀疑我的应用程序创建了太多反应器,并且每个反应器都有自己的用于 db 和 http 客户端的池线程。我在我的 theseus profiler 中看到 scripts/twistd.py:run 被调用了 5 380 次。这意味着什么?
    • 这意味着我想 scripts/twistd.py:run 被调用了 5380 次。如果没有看到您要询问的代码,我真的不能再说什么了。它可能正在做......实际上......任何事情。
    猜你喜欢
    • 2011-11-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多