首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python Profiling:什么是“方法‘轮询'select.poll’对象”?

Python Profiling:什么是“方法‘轮询'select.poll’对象”?
EN

Stack Overflow用户
提问于 2016-09-04 13:20:01
回答 2查看 3.4K关注 0票数 14

我已经使用python的cProfile模块分析了我的python代码,并获得了以下结果:

代码语言:javascript
复制
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
 13937860 96351.331    0.007 96351.331    0.007 {method 'poll' of 'select.poll' objects}
 13930480  201.012    0.000  201.012    0.000 {built-in method posix.read}
 13937860  180.207    0.000 97129.916    0.007 connection.py:897(wait)
 13937860  118.066    0.000 96493.283    0.007 selectors.py:356(select)
  6968925   86.243    0.000 97360.129    0.014 queues.py:91(get)
 13937860   76.067    0.000  194.402    0.000 selectors.py:224(register)
 13937860   64.667    0.000 97194.582    0.007 connection.py:413(_poll)
 13930480   64.365    0.000  279.040    0.000 connection.py:374(_recv)
31163538/17167548   64.083    0.000  106.596    0.000 records.py:230(__getattribute__)
 13937860   57.454    0.000  264.845    0.000 selectors.py:341(register)
...

显然,我的程序大部分运行时间都在method 'poll' of 'select.poll' objects中。但是,我不知道何时以及为什么调用此方法,也不知道为了减少这些方法调用,我必须在我的程序中进行哪些更改。

那么,我可以在代码中寻找什么来避免这个瓶颈呢?

我在Linux服务器上使用64位python3.5和numpy和sharedmem

EN

回答 2

Stack Overflow用户

发布于 2018-06-01 07:16:29

cProfile不会捕获在不同进程中执行的方法(例如,使用ProcessPoolExecutor)。因此,select.poll只是显示您的主进程正在等待其他进程的结果。

票数 10
EN

Stack Overflow用户

发布于 2016-09-04 13:34:48

它是python库的一部分。它用于从I/O读取事件。根据定义,它将等待事件,因此需要更长的时间。这不是你应该改变的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39313762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档