我想要的是开始在我的代码中的某个地方计算时间,然后获得通过的时间,以测量执行少量功能所花费的时间.我认为我使用的是timeit模块错误,但文档对我来说只是让人困惑.
import timeit
start = timeit.timeit()
print("hello")
end = timeit.timeit()
print(end - start)
Run Code Online (Sandbox Code Playgroud) 我在Python中有一个命令行程序需要一段时间才能完成.我想知道完成跑步所需的确切时间.
我看过这个timeit模块,但它似乎只适用于小代码片段.我想要整个计划的时间.
使用python中的Time模块可以测量经过的时间吗?如果是这样,我该怎么做?
我需要这样做,以便如果光标已在窗口小部件中持续一段时间,则会发生事件.
我一直在使用cProfile来分析我的代码,它一直很好用.我还使用gprof2dot.py来显示结果(使其更清晰).
但是,cProfile(以及到目前为止我见过的大多数其他Python分析器)似乎只在函数调用级别进行分析.当从不同的地方调用某些函数时,这会引起混淆 - 我不知道呼叫#1或呼叫#2是否占用了大部分时间.当所讨论的函数深度为六级时,这会变得更糟,从其他七个地方调用.
如何进行逐行分析?
而不是这个:
function #12, total time: 2.0s
Run Code Online (Sandbox Code Playgroud)
我想看到这样的事情:
function #12 (called from somefile.py:102) 0.5s
function #12 (called from main.py:12) 1.5s
Run Code Online (Sandbox Code Playgroud)
cProfile确实显示了总共有多少时间"转移"到父级,但是当你有一堆层和互连的调用时,这种连接又会丢失.
理想情况下,我希望有一个GUI来解析数据,然后向我显示我的源文件,每个行的总时间.像这样的东西:
main.py:
a = 1 # 0.0s
result = func(a) # 0.4s
c = 1000 # 0.0s
result = func(c) # 5.0s
Run Code Online (Sandbox Code Playgroud)
然后我就可以点击第二个"func(c)"调用来查看该调用中占用的时间,与"func(a)"调用分开.
那有意义吗?是否有任何分析库收集此类信息?我错过了一些很棒的工具吗?
我倾向于编写相当大的模板化标头C++库,我的用户通常会抱怨编译时间.在想到这件事之后,我突然意识到我不知道时间会在哪里.是否有一些简单的方法来使用常见的编译器(例如g ++,icc和xlC)来分析C++编译过程?例如,是否可以了解在C++编译的每个阶段花费了多少时间?
通常我使用shell命令time.我的目的是测试数据是小型,中型,大型还是非常大的集合,多少时间和内存使用量.
用于linux或python的任何工具都可以做到这一点?
我有许多文本文件,比如50,我需要读入一个庞大的数据帧.目前,我正在使用以下步骤.
这适用于100 KB大小的文件 - 几分钟,但在50 MB时,它只需要几个小时,并且不实用.
如何优化我的代码?特别是 -
这是一个示例代码.我自己的代码有点复杂,因为文本文件更复杂,因此我必须使用大约10个正则表达式和多个while循环来读取数据并将其分配到正确数组中的正确位置.为了保持MWE的简单,我没有在MWE的输入文件中使用重复标签,所以我希望我无缘无故地读取文件两次.我希望这是有道理的!
import re
import pandas as pd
df = pd.DataFrame()
paths = ["../gitignore/test1.txt", "../gitignore/test2.txt"]
reg_ex = re.compile('^(.+) (.+)\n')
# read all files to determine what indices are available
for path in paths:
file_obj = open(path, 'r')
print file_obj.readlines()
['a 1\n', 'b 2\n', 'end']
['c 3\n', 'd 4\n', 'end']
indices = []
for path in paths:
index = []
with open(path, 'r') …Run Code Online (Sandbox Code Playgroud) 我想使用cProfile在Python中分析函数的方法.我尝试了以下方法:
import cProfile as profile
# Inside the class method...
profile.run("self.myMethod()", "output_file")
Run Code Online (Sandbox Code Playgroud)
但它不起作用.如何用"run"调用self.method?
我没有真正需要改进它,它只是为了好玩.现在它在大约200K字的列表上花了大约一秒钟.
我已经尝试过尽可能地优化它(使用生成器代替列表推导产生了很大的不同),并且我已经没有想法了.
你有什么?
#!/usr/bin/env python
# let's cheat at scrabble
def count_letters(word):
count = {}
for letter in word:
if letter not in count: count[letter] = 0
count[letter] += 1
return count
def spellable(word, rack):
word_count = count_letters(word)
rack_count = count_letters(rack)
return all( [word_count[letter] <= rack_count[letter] for letter in word] )
score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2,
"f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3,
"l": 1, "o": …Run Code Online (Sandbox Code Playgroud) 我需要运行一个python脚本一段随机的时间,暂停它,得到一个堆栈回溯,并取消它.我已经用Google搜索了一些方法来做到这一点,但我认为没有明显的解决方案.
python ×9
performance ×2
profiling ×2
time ×2
benchmarking ×1
c++ ×1
compilation ×1
cprofile ×1
elapsed ×1
line-by-line ×1
measure ×1
optimization ×1
pandas ×1
parsing ×1
profile ×1
profiler ×1
regex ×1
shell ×1
stochastic ×1
timeit ×1
unix ×1