2013-02-07 2 views
5

Я пытаюсь время цикла while в цикле while, общее время, которое требуется для выполнения, и записывать время, которое требуется для этого, каждый раз, когда он петли. Мне нужен способ достичь этого, используя мой код, если это возможно, или открыть различные концепции, о которых я пока не знаю.Время цикла while python

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() 

Петля напечатает время, но я очень уверен, что это не принимая во внимание, вложенное, а время сна цикла. Как я могу позволить python время как в цикле, так и в каждом цикле, который ему нужно будет делать (в данном случае 500)?

+0

http://stackoverflow.com/questions/1557571/как к получить-время-а-питон-программы-исполнения. – Greg

+0

@greg Если вы читаете мой код, я делаю этот модуль синхронизации. То, что я пытаюсь понять, глубже, чем базовое время полной программы. Он должен быть рассчитан на каждый цикл. – Bain

+0

Bain, моя ошибка. – Greg

ответ

10

При установке начать за пределы начального цикла вы гарантирующие, что вы получаете неправильное время, которое требуется для выполнения цикла 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) 
+0

Удивительно, это то, что мне нужно. Как-то я потерял свое время. Спасибо за эту концепцию. – Bain

1

правая идея, но ваше размещение временных функций является крошечным откусили, я исправил его здесь:

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() 
Смежные вопросы