我一直在使用python的cProfile
模塊異形我的Python代碼,並得到以下結果:Python分析:「select.poll」對象的「方法」輪詢「是什麼?
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位python 3.5與numpy和sharedmem。
從I/O中讀取事件意味着什麼? (我讀過select.poll的文檔,但它沒有幫助我。)I/O(單獨)是指讀取/寫入文件和命令行字符?即使我不能改變方法本身,我也許想改變它被調用的地方/頻率。但是,我從來沒有明確地在我的代碼中調用這個方法。它必須在某個子程序中調用。你有什麼猜測這種子程序可以處理什麼? – Samufi
通常是文件,但可以是fileno /文件描述符。查看源文件/Python35/Lib/selectors.py – MotKohn