私は、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
Stackoverflowの例: 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で終了します。そして、あなたはそれを直接印刷するか、新しい変数に保存することができます。
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)