1

我经常使用 Jupyter/IPython,并且习惯于%%time在每个单元格前面包含魔术命令,以了解所花费的 CPU 量和挂钟时间。

有没有一种简单的方法可以从脚本中获得相同的测量值?

更具体地说,我想要这样的东西:

 results = measure_times(something_possibly_parallel)
 print results.wall_clock, results.cpu_user, results.cpu_total
4

1 回答 1

0

您可以将所需的measure_times()实用程序实现为 python上下文管理器。那么用法如下:

with measure_times("block name"):
    your code here

仅测量挂时间的示例实现如下:

$ cat measure_times.py 
import timeit

class measure_times:
    def __init__(self, blockname):
        self.blockname = blockname

    def __enter__(self):
        self.starttime = timeit.default_timer()

    def __exit__(self, exc_type, exc_value, traceback):
        t = timeit.default_timer() - self.starttime
        print('--- Time measurement report: {}: {}s'.format(self.blockname, t))


with measure_times("Integer sum"):
    s = 0
    for i in range(1000000):
        s += i
    print(s)

with measure_times("Floating point sum"):
    s = 0
    for i in range(1000000):
        s += i
    print(s)

$ python measure_times.py 
499999500000
--- Time measurement report: Integer sum: 0.0683062076569s
499999500000
--- Time measurement report: Floating point sum: 0.066034078598s
于 2017-05-12T10:54:09.430 回答