时间一段时间循环python



我试图在while循环中计时while循环,执行所需的总时间,并记录每次循环所需的时间。如果可能的话,我需要一种使用我的代码实现这一点的方法,或者对我可能还不知道的不同概念持开放态度。

import random
import time
import sys
def main():

    looperCPU = 500
    start = time.time()
    while (looperCPU != 0):
        #start = time.time()
        #this is the computation for 3 secs
        time.sleep(3)
        random_number = random.randint(0,1000)
        #Send to printer for processing
        #.75 secs to 4.75 secs to generate a pause before printing
        secondsPause = random.uniform(.75,4.75)

        #This is the printer function
        printerLooper = True
        while printerLooper == True :
            print("Sleeping for ", secondsPause, " seconds")
            print(random_number)
            printerLooper = False

        #
        print("total time taken this loop: ", time.time() - start)
        looperCPU -= 1    

main()

循环会打印一个时间,但我很确定它没有考虑嵌套while循环的睡眠时间。我如何允许python对while循环和它需要执行的每个循环进行计时(在本例中为500)?

当您在初始循环之外设置start时,您可以保证执行while循环所需的时间不正确。这就像是在说:

program_starts = time.time()
while(True):
    now = time.time()
    print("It has been {0} seconds since the loop started".format(now - program_starts))

这是因为开始在整个执行时间内保持不变,而结束时间则随着时间的推移而稳步增加。通过在循环中放置开始时间,您可以确保您的开始时间也随着程序的运行而增加。

while (looperCPU != 0):
    start_time = time.time()
    # Do some stuff
    while printerLooper == True :
        print("Sleeping for ", secondsPause, " seconds")
        print(random_number)
        printerLooper = False
    end_time = time.time()
    print("total time taken this loop: ", end_time - start_time)

在python中,您可以查看以下文档https://docs.python.org/2/library/timeit.html
堆栈溢出示例:如何使用timeit模块

import timeit
timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)

在Jupyter笔记本电脑中,

%%timeit -n 100
import pandas as pd
s = pd.Series([101.00, 121.00])
summary = 0
for item in s:
    summary+=item

正确的想法,但您对时序函数的放置有点偏离,我在这里纠正了它:

import random
import time import sys
def main():
    looperCPU = 500
    start = time.time()
    while (looperCPU != 0):
       #this is the computation for 3 secs
       time.sleep(3)
       random_number = random.randint(0,1000)
       #Send to printer for processing
       #.75 secs to 4.75 secs to generate a pause before printing
       secondsPause = random.uniform(.75,4.75)

       #This is the printer function
       printerLooper = True
       myStart = time.time()
       while printerLooper == True :
          print("Sleeping for ", secondsPause, " seconds")
          print(random_number)
          printerLooper = False
          print("total time taken this loop: ", time.time() - myStart)    
       looperCPU -= 1    
main()

您可以使用这个pytictoc。使用pip或conda进行安装。阅读pytictoc上的文档。它的工作原理就像matlabs tic toc。基本上只是用tic开始计时器,用toc结束计时器。u可以直接打印它,也可以将它存储在一个新的变量中。

from pytictoc import TicToc
def main()
    t = TicToc()  # create instance of class
    start_time= t.tic() #start timer
    while ():  

    #end of while loop
    end_time = t.toc()
    print("end_time", end_time)

最新更新