标签: cprofile

将 cProfile 与 asyncio 代码一起使用的正确方法是什么?

我正在尝试确定如何通过 asyncio 代码正确使用 cProfile 和 pstats。我正在通过运行来分析我的脚本cProfile.run('loop.run_until_complete(main())', 'profile.stats')

使用pstatsto sort by 后SortKeys.TIME,我得到以下输出:

In [9]: sorted_stats.print_stats()
Fri Feb 15 14:40:18 2019    profile.txt

         67411199 function calls (67230882 primitive calls) in 305.899 seconds

   Ordered by: internal time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     3617  273.162    0.076  273.162    0.076 {method 'poll' of 'select.epoll' objects}
14094092/14093931    1.527    0.000    1.904    0.000 {built-in method builtins.isinstance}
    44901    1.166    0.000    1.166    0.000 {built-in method posix.stat}
   784052    1.028    0.000    1.479    0.000 /usr/lib/python3/dist-packages/soupsieve/util.py:41(lower)
    32070    0.887    0.000 …
Run Code Online (Sandbox Code Playgroud)

python profiling epoll cprofile python-asyncio

8
推荐指数
1
解决办法
2182
查看次数

Python cProfile:如何从分析数据中过滤出特定的调用?

我已经开始分析一个包含许多sleep(n)语句的脚本.总而言之,我花了超过99%的睡眠时间.尽管如此,它在实际工作期间偶尔遇到性能问题但是相关的,有趣的分析数据在例如使用kcachegrind时变得非常难以识别.

有没有办法可以将某些调用/函数列入黑名单?或者,如何通过对分析数据文件进行后处理来过滤掉这样的调用?

我正在使用profilestats装饰器(http://pypi.python.org/pypi/profilestats).

谢谢

python profiling kcachegrind cprofile

7
推荐指数
1
解决办法
1658
查看次数

Fortran通过f2py扩展到Python:如何配置?

我正在使用通过f2py(Ver.2)编译的Fortran(gfortran 4.4.7)编写的Python(2.7.2)扩展.

我可以使用Python配置文件cProfile,但结果不会提供有关Fortran函数的任何信息.相反,时间归因于调用Fortran函数的Python函数.

我为我构建的所有Fortran对象启用了"-pg -O"标志,并在f2py调用中通过以下f2py --opt="-pg -O"方式创建了共享对象:...

任何有关如何获取Fortran信息的提示都非常受欢迎.

如果有人使用类似的设置,使用不同的分析器,我也会感兴趣.

python profiler fortran f2py cprofile

7
推荐指数
1
解决办法
564
查看次数

c使用相对导入模拟模块

我有这些文件 mymodule

mymodule
??? config.py
??? __init__.py
??? lib.py
Run Code Online (Sandbox Code Playgroud)

有了这个简单的内容:

# config.py
NAME = "Julius Cesar"

# lib.py
from .config import NAME

def get_name():
    return NAME
Run Code Online (Sandbox Code Playgroud)

我可以运行它(没有任何反应) python -m mymodule.lib

但我无法描述它:

» python -m cProfile mymodule/lib.py 
         2 function calls in 0.000 seconds

   Ordered by: standard name

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 lib.py:1(<module>)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}


Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", …
Run Code Online (Sandbox Code Playgroud)

python import cprofile

7
推荐指数
1
解决办法
218
查看次数

使用cProfile分析完全正常工作的多处理python脚本时出错

我编写了一个使用的小python脚本multiprocessing(参见/sf/answers/2931299801/).它在我测试它时起作用:

$ ./forkiter.py
0
1
2
3
4
sum of x+1: 15
sum of 2*x: 20
sum of x*x: 30
Run Code Online (Sandbox Code Playgroud)

但是当我尝试对其进行分析时cProfile,我会得到以下结果:

$ python3.6 -m cProfile -o forkiter.prof ./forkiter.py
0
1
2
3
4
Traceback (most recent call last):
  File "/home/bli/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/bli/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/home/bli/lib/python3.6/cProfile.py", line 160, in <module>
    main()
  File "/home/bli/lib/python3.6/cProfile.py", line 153, in main
    runctx(code, globs, None, options.outfile, options.sort)
  File "/home/bli/lib/python3.6/cProfile.py", …
Run Code Online (Sandbox Code Playgroud)

python pickle cprofile

7
推荐指数
1
解决办法
1106
查看次数

cProfile 在运行多处理 Python 代码时导致酸洗错误

我有一个正常运行时运行良好的 Python 脚本:

$ python script.py <options>

我正在尝试使用 cProfile 模块分析代码:

$ python -m cProfile -o script.prof script.py <options>

当我启动上面的命令时,我收到一个关于无法pickle函数的错误:

Traceback (most recent call last):
  File "scripts/process_grid.py", line 1500, in <module>
    _compute_write_index(kwrgs)
  File "scripts/process_grid.py", line 626, in _compute_write_index
    args,
  File "scripts/process_grid.py", line 1034, in _parallel_process
    pool.map(_apply_along_axis_palmers, chunk_params)
  File "/home/james/miniconda3/envs/climate/lib/python3.6/multiprocessing/pool.py", line 266, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/home/james/miniconda3/envs/climate/lib/python3.6/multiprocessing/pool.py", line 644, in get
    raise self._value
  File "/home/james/miniconda3/envs/climate/lib/python3.6/multiprocessing/pool.py", line 424, in _handle_tasks
    put(task)
  File "/home/james/miniconda3/envs/climate/lib/python3.6/multiprocessing/connection.py", line 206, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File …
Run Code Online (Sandbox Code Playgroud)

python pickle cprofile python-multiprocessing

7
推荐指数
1
解决办法
1055
查看次数

了解Pycharm的探查器结果与cProfile的结果以及如何获取有关标准库函数的更多详细信息

我正在努力减少重构的程序的执行时间,并且在理解PyCharm中探查器的输出以及如果直接运行cProfile会得到的输出与输出的关系方面遇到困难。(下面显示了我的输出,突出显示了两行有趣的内容,在尝试进行修复之前,我想确保自己理解正确。)特别是,“时间”和“自己的时间”列代表什么?我猜Own Time是该函数消耗的时间,减去该函数中进行的任何其他调用的时间,而time是每个函数所花费的总时间(即,它们分别重命名为tottime和cumtime),但是我可以找不到任何能清楚地记录下来的东西。

另外,如何使用PyCharm的探查器或香草cProfile查找有关特别昂贵的功能的更多信息?例如,_strptime似乎花了我很多时间,但是我知道我的代码在四个不同的函数中都使用了它。我想了解一下这200万个调用在我的各个职能中的分布情况。我猜想calc_near_geo_size_and_latency函数中有一个不成比例的数字,但是在重写代码之前,我想要更多的证明。(我意识到我可以单独分析功能并进行比较,但我希望有一些简洁的方法。)

我正在使用Python 3.6和PyCharm Professional 2018.3。

对程序进行概要分析的部分输出

python profiling cprofile pycharm python-3.x

7
推荐指数
1
解决办法
400
查看次数

从命令行分析 python 3.6 模块

我有一个 python 项目,我使用该标志将应用程序作为模块执行-m。所以像这样:

python -m apps.validate -i input.mp4
Run Code Online (Sandbox Code Playgroud)

现在,我想使用命令行对其进行分析。因此,内联示例建议将 cProfile 本身调用为一个模块。但是,我不能做类似的事情:

python -m cProfile apps.validate -i input.mp4
Run Code Online (Sandbox Code Playgroud)

但是,这会导致错误“没有这样的文件或目录”。由于相对导入,我不能直接进入apps目录并启动。validate.py

有没有办法在命令行上分析模块?

python profiling cprofile python-3.6

7
推荐指数
1
解决办法
5009
查看次数

Python 类型注释会减慢代码速度

我正在优化我的代码以提高性能,当我用来cProfile检查我的代码时,大量的运行时间是由于类型注释造成的!删除类型注释确实可以提高性能。cProfiler您可以在下面看到带注释和不带注释的输出。

注释代码: 带注释的代码性能

未注释的代码: 没有注释的代码的性能

带注释的明显使用了__call____new__inner__getitem____hash__等方法typing.py,而且比不带注释的慢了一倍!

我的测试代码很简单:

from reil.datatypes import reildata

x = reildata.Categorical(name='cat', categories=('A', 'B', 'C', 'D', 'E'))

for _ in range(10000):
    [x(v) for v in ('A', 'B', 'C', 'D', 'E')]
Run Code Online (Sandbox Code Playgroud)

这是主代码的相关部分(datatypes.reildata.py):

from __future__ import annotations

import dataclasses
import itertools
from dataclasses import field
from typing import Any, Callable, Dict, Generic, Iterable, Iterator, List, Optional, Sequence, Tuple, TypeVar, Union, cast

from typing_extensions import …
Run Code Online (Sandbox Code Playgroud)

type-hinting cprofile python-3.x python-dataclasses

7
推荐指数
0
解决办法
737
查看次数

试图用pip安装cProfile,我收到一个错误

所以我到处寻找有关如何安装cProfile的帮助,但我什么都没发现.当这种情况经常发生时,我转向pip并运行通常的:'pip install [module name]'但是我收到错误:找不到匹配的cprofile发行版.

我不知道如何安装cProfile,我到处都看.我很少转向StackOverflow,当我这样做时,我彻底搜索了这样一个问题.

任何帮助,将不胜感激.

速记问题:如何安装cProfile?

python pip cprofile python-3.x

6
推荐指数
1
解决办法
7532
查看次数