簡體   English   中英

在Python cProfile中,調用計數和原始調用計數有什么區別?

[英]In Python cProfile, what is the difference between calls count and primitive calls count?

當我使用pstats顯示分析數據時,第一列是每個函數的調用數。

但是,當我對數據進行排序時,我可以選擇callsncallspcalls鍵。 文件說, callsncalls調用次數 ,當pcalls原始調用計數 通過callsncalls排序是一樣的嗎? pcalls什么不同?

http://docs.python.org/2/library/profile.html#module-cProfile

我們定義原語意味着調用不是通過遞歸引起的。

...當函數沒有遞歸時,這兩個值是相同的

通過callsncalls排序是相同的。


當第一列中有兩個數字時(例如,43/3),則后者是原始調用的數量,前者是實際的調用數。 請注意,當函數沒有遞歸時,這兩個值是相同的,只打印單個數字:

In [43]: def a(i):
   ....:     if i == 0:
   ....:         return
   ....:     a(i-1)
   ....:


In [54]: %prun a(0)
  ncalls  tottime  percall  cumtime  percall filename:lineno(function)
       1    0.000    0.000    0.000    0.000 <ipython-input-43-25b7f3d268b8>:1(a)


In [55]: %prun a(1)
  ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     2/1    0.000    0.000    0.000    0.000 <ipython-input-43-25b7f3d268b8>:1(a)


In [56]: %prun a(3)
  ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     4/1    0.000    0.000    0.000    0.000 <ipython-input-43-25b7f3d268b8>:1(a)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM