相关疑难解决方法(0)

用于性能分析的 Python 工具

可能的重复:
如何分析 Python 脚本?

您知道哪些可视化工具,类似于 Java 的 JProfiler,可以分析 Python 应用程序的性能?

python java performance jprofiler

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

分析Django webserver以获得高启动时间

我注意到,manage.py runserver为我正在开发的Django项目启动开发Web服务器需要花费大量时间.我想知道是否有办法了解启动的哪个部分需要如此多的资源,最终能够收集足够的信息来解决问题.

任何人都知道我该怎么办?

django performance webserver profiling startup

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

你如何找到一块Python的CPU消耗?

背景

我有一个Django应用程序,它在低负载下工作并且响应很好,但在高负载(如100个用户/秒)时,它消耗100%的CPU,然后由于缺乏CPU速度减慢.

问题:

  • 对应用程序进行概要分析为我提供了时间.
  • 这个时间在高负荷时增加.
  • 消耗的时间可能是由于复杂的计算或等待CPU.

那么,如何找到一段代码所消耗的CPU周期呢?

由于降低CPU消耗会增加响应时间.

  • 我可能编写了非常高效的代码,需要增加更多的CPU能力

要么

  • 我可能有一些愚蠢的代码占用CPU并导致速度减慢?

更新

  • 我使用Jmeter来配置我的网络应用程序,它给了我2个请求/秒的吞吐量.[100位用户]
  • 我在100个请求上获得36秒的平均时间,在1个请求上获得1.25秒的平均时间.

更多信息

  • 配置Nginx + Uwsgi有4名工人
  • 没有使用数据库,使用REST API的响应
  • 在第1次点击时,REST API的响应被缓存,因此没有什么区别.
  • 使用ujson了JSON解析.

很想知道:

  • Python-Django被许多大型网站用于许多大型网站,然后必须有一些高端的Debug/Memory-CPU分析工具.
  • 我发现的所有内容都是执行性能分析的休闲代码片段.

python django performance profiling stress-testing

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

Python - time.time()与bash时间

我一直在研究Python 3中的一些Project Euler问题[osx 10.9],我想知道它们运行了多长时间.

我一直在使用以下两种方法为我的程序计时:

1)

import time
start = time.time()

[program]

print(time.time() - start)
Run Code Online (Sandbox Code Playgroud)

2)在bash命令行上输入 time python3 ./program.py

但是,这两种方法往往会产生不同的结果.在我正在处理的程序中,第一个返回0.000263(秒,截断)而第二个返回

real    0m0.044s
user    0m0.032s
sys     0m0.009s
Run Code Online (Sandbox Code Playgroud)

显然存在巨大的差异 - 与real时间相比有两个数量级.

我的问题是:
a)为什么会有区别?这是解释器的开销吗?
b)我应该使用哪一个来准确确定程序运行的时间?是time.time()准确的,在如此小的间隔?

我意识到这些微不足道的时间并不是最重要的; 这更像是一种好奇心.

谢谢.

[ 更新: ]
感谢所有的答案和评论.你的开销是正确的.这个程序:

 import time
 start = time.time()

 print("hello world")

 print(time.time() - start)
Run Code Online (Sandbox Code Playgroud)

据bash说,需要大约0.045秒.

据bash说,我复杂的Project Euler问题耗时约0.045秒.问题解决了.

我来看看timeit.谢谢.

python macos bash time

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

Cythonising Pandas:内容,索引和列的ctypes

我是新的,以用Cython,但我已经经历了非凡的加速只复制我.py.pyx(和cimport cython,numpy等等),并导入到ipython3pyximport.许多教程都是从这种方法开始的,下一步是cdef为每个数据类型添加声明,我可以为for循环中的迭代器做.但与大多数Pandas Cython教程或示例不同,我不应用函数,可以这么说,更多使用切片,求和和(等)来操纵数据.

所以问题是:我可以通过声明我的DataFrame只包含floats(double),并且列是int行和行来增加代码运行的速度int吗?

如何定义嵌入列表的类型?即[[int,int],[int]]

这是一个为DF分区生成AIC分数的示例,对不起它是如此冗长:

    cimport cython
    import numpy as np
    cimport numpy as np
    import pandas as pd

    offcat = [
        "breakingPeace", 
        "damage", 
        "deception", 
        "kill", 
        "miscellaneous", 
        "royalOffences", 
        "sexual", 
        "theft", 
        "violentTheft"
        ]

    def partitionAIC(EmpFrame, part, OffenceEstimateFrame, ReturnDeathEstimate=False):
        """EmpFrame is DataFrame of ints, part is nested list of ints, OffenceEstimate frame is DF of float"""
        """partOf/block is a …
Run Code Online (Sandbox Code Playgroud)

cython pandas

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

如何剖析Python脚本的CPU使用率?

理想情况下,我想要记录执行深度神经网络Keras模型的Python脚本的CPU使用情况。我正在寻找与CPU等效的memory_profiler,它提供了进程的内存消耗。

我看过使用psutil(在此答案中建议),这表明我的脚本可能包含的某些变体。

p = psutil.Process(current_pid)
p.cpu_percent()
Run Code Online (Sandbox Code Playgroud)

但问题是我真正想捕获效果的重要函数调用将是模型的推断阶段

model.predict(x_test)
Run Code Online (Sandbox Code Playgroud)

如果在此步骤之前/之后运行psutil,则记录的CPU使用率将无法真正反映该进程的CPU使用率。

因此,我当时在考虑是否可以使用top / htop之类的东西将脚本的CPU使用率记录到某个文件中,捕获进程运行时CPU的使用情况波动,然后在事后计算平均值(或类似值)。但是,我看到的问题是,我是否不需要知道PID才能使用top,所以在执行脚本之前(甚至还没有分配PID的情况下)如何使用top监视脚本?

我可以看到这个排名很高的答案建议使用cProfile,它可以提供脚本中函数的运行时间。尽管这并不是我想要的,但我注意到它返回了CPU秒总数,这至少可以让我比较这方面的CPU使用率。

python profiling cpu-usage keras

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

测量Python代码片段执行时间的最佳方法

我想比较两个片段的执行时间,看看哪一个更快。因此,我想要一种准确的方法来测量 python 代码片段的执行时间。

我已经尝试过使用time.time()time.process_time()time.perf_counter_ns()以及timeit.timeit(),但我面临着与所有这些相同的问题。也就是说:当我使用上述任何方法来测量同一代码片段的执行时间时,每次运行它时它都会返回不同的值。这种变化有些显着,以至于我无法可靠地使用它们来比较两个片段的执行时间差异。

例如,我在我的 google colab 中运行以下代码:

import time
t1 = time.perf_counter()
sample_list = []
for i in range(1000000):
  sample_list.append(i)
t2 = time.perf_counter()
print(t2 - t1)
Run Code Online (Sandbox Code Playgroud)

我运行上面的代码 10 次,结果的变化约为 50%(最小值 = 0.14,最大值 = 0.28)。

还有其他选择吗?

python time timeit

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

有没有办法分析 OpenCL 或 pyOpenCL 程序?

我正在尝试优化 pyOpenCL 程序。出于这个原因,我想知道是否有办法分析程序并查看大部分时间需要在哪里。

你知道如何解决这个问题吗?

提前
致谢安迪

编辑:例如,用于 CUDA 的 nvidias nvprof 可以用于 pyCuda,但不适用于 pyOpenCL。

python opencl pyopencl

5
推荐指数
1
解决办法
2014
查看次数

有没有更快的方法来解析这个文本文件?

我正在从一些类似于以下内容的文本文件中解析日期/时间/测量信息:

[Sun Jul 15 09:05:56.724 2018] *000129.32347
[Sun Jul 15 09:05:57.722 2018] *000129.32352
[Sun Jul 15 09:05:58.721 2018] *000129.32342
[Sun Jul 15 09:05:59.719 2018] *000129.32338
[Sun Jul 15 09:06:00.733 2018] *000129.32338
[Sun Jul 15 09:06:01.732 2018] *000129.32352
Run Code Online (Sandbox Code Playgroud)

结果进入输出文件,如下所示:

07-15-2018 09:05:56.724, 29.32347
07-15-2018 09:05:57.722, 29.32352
07-15-2018 09:05:58.721, 29.32342
07-15-2018 09:05:59.719, 29.32338
07-15-2018 09:06:00.733, 29.32338
07-15-2018 09:06:01.732, 29.32352
Run Code Online (Sandbox Code Playgroud)

我正在使用的代码如下所示:

import os
import datetime

with open('dq_barorun_20180715_calibtest.log', 'r') as fh, open('output.txt' , 'w') as fh2:
    for line in fh:
        line = line.split()
        monthalpha = …
Run Code Online (Sandbox Code Playgroud)

python optimization file

5
推荐指数
1
解决办法
1906
查看次数

Python Try-Except 与 If-Else 性能

最近有人对我说“在 Python 中,最好稍后尝试请求宽恕,而不是乞求许可”,我觉得这很有趣,但也与我的问题相关

我正在创建一个名为 Ada 的个人助理,并且对性能非常迂腐。据我所知,使用 try 语句比检查然后执行更快。EG:(如果目录不存在,第二个会慢一些???)

import os

try:
    os.makedirs("Test")
except FileExistsError:
    pass

# VS

if not os.path.exists("Test"):
    os.makedirs("Test")
Run Code Online (Sandbox Code Playgroud)

因此,在创建编码时,您需要权衡更有可能的情况。在我的示例中,文件更有可能不存在,因此我应该使用 try 块,它比 If-Else 产生更好的性能

我想知道尝试(双关语)这种默认 If-Else 方法是否有任何好处?

PS(这个问题不是Python if 与 try- except的重复,因为它没有指定比较代码块的概率try:

如果有人感兴趣,我当前的代码:(在 AppData 中创建一个名为 Ada 的文件夹,其中包含 Config.ini 文件)

import os

AppDataDirectory = os.getenv("AppData")
AdaDirectory = AppDataDirectory + "\Ada"
ConfigFile = AdaDirectory + "\CONFIG.ini"

try:
    File = open(ConfigFile, "r")
except FileNotFoundError:
    try:
        os.makedirs(AdaDirectory)
    except FileExistsError:
        print("Config File Missing")
    # Setup Config …
Run Code Online (Sandbox Code Playgroud)

python windows performance try-catch

5
推荐指数
1
解决办法
1441
查看次数