Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python定时器-启动和停止功能?_Python_Performance_Timer_Timeit - Fatal编程技术网

Python定时器-启动和停止功能?

Python定时器-启动和停止功能?,python,performance,timer,timeit,Python,Performance,Timer,Timeit,Python计时器是否能够在同一个计时器对象中测量多个间隔?我有一个程序,可以在数千个对象上循环并执行多个操作,例如:下载、处理、存储、分析)。我希望能够在执行多次时测量每个单独步骤的累积时间,但是在执行其他操作的较大代码块中 有没有办法启动然后停止(暂停)计时器,然后重新启动它们来测量更多的时间?类似于下面的伪代码 import timeit download_timer = <create a timer> processing_timer = <create a time

Python计时器是否能够在同一个计时器对象中测量多个间隔?我有一个程序,可以在数千个对象上循环并执行多个操作,例如:下载、处理、存储、分析)。我希望能够在执行多次时测量每个单独步骤的累积时间,但是在执行其他操作的较大代码块中

有没有办法启动然后停止(暂停)计时器,然后重新启动它们来测量更多的时间?类似于下面的伪代码

import timeit
download_timer = <create a timer>
processing_timer = <create a timer>

for item_id in big_list_of_items:
    download_timer.start()
    slow_response = download_data(item_id)
    download_timer.pause()
    processing_timer.start()
    munge_data(slow_response)
    processing_timer.pause()

log.debug('Cumulative download time: {} sec'.format(download_timer.elapsed))
log.debug('Cumulative data processing time: {} sec'.format(processing_timer.elapsed))
import timeit
下载计时器=
处理计时器=
对于\u项目的大\u列表\u中的项目\u id:
下载\u timer.start()
慢速响应=下载数据(项目id)
下载\u timer.pause()
正在处理\u timer.start()
munge_数据(响应缓慢)
正在处理\u timer.pause()
log.debug('累计下载时间:{}秒'。格式(下载时间已过))
log.debug('累计数据处理时间:{}秒'。格式(处理计时器已用))

我目前正在每个循环上创建一个新的计时器,然后我必须在多个变量中跟踪时间,我将每个增量添加到这些变量中。仔细阅读文档,这似乎是最好的选择,除了创建自己的类来实现这一点之外,但我希望有人知道一种更简单的方法

?从一个一般开始时间计算不同的步骤是否有意义?如果您使用当前时间,并保存单独步骤使用的时间,您应该能够映射每个子进程使用的时间以及使用的总时间。我最后创建了两个小类来完成此操作。一种是单个时间间隔的分割时间。第二个是timers对象。它有一个dict,可以跟踪您想要创建的尽可能多的计时器。dict中的每个计时器只是一个拆分对象的列表。有几种方法可以总结分割时间,获得平均值,或查看单个分割时间。它在300k循环上运行正常,但创建的分割对象太多,无法很好地缩放。我添加了重新启动拆分并保留累积时间的功能,因此如果有大量迭代,您可以选择重新使用它??从一个一般开始时间计算不同的步骤有意义吗?如果您使用当前时间,并保存单独步骤使用的时间,您应该能够映射每个子进程使用的时间以及使用的总时间。我最后创建了两个小类来完成此操作。一种是单个时间间隔的分割时间。第二个是timers对象。它有一个dict,可以跟踪您想要创建的尽可能多的计时器。dict中的每个计时器只是一个拆分对象的列表。有几种方法可以总结分割时间,获得平均值,或查看单个分割时间。它在300k循环上运行正常,但创建的分割对象太多,无法很好地缩放。我添加了重新启动拆分并保留累积时间的功能,因此如果有大量迭代,您可以选择重新使用它。