2013-02-07 42 views
5

Tôi đang cố gắng để thời gian một vòng lặp trong vòng một trong khi vòng lặp, tổng thời gian cần để thực hiện, và ghi lại thời gian cần để làm như vậy, mỗi khi nó vòng. Tôi cần một cách để đạt được điều này bằng cách sử dụng mã của tôi nếu có thể, hoặc mở cho các khái niệm khác nhau mà tôi có thể chưa biết.Thời gian một vòng lặp 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() 

Vòng lặp sẽ in một thời gian, nhưng tôi rất chắc chắn nó không tính đến thời gian ngủ vòng lặp lồng nhau. Làm thế nào tôi có thể cho phép python để thời gian cả trong khi vòng, mỗi vòng lặp mà nó sẽ cần phải làm (trong trường hợp này 500)?

+0

http://stackoverflow.com/questions/1557571/làm thế nào để có được thời gian-of-a-python-chương trình-thực hiện. – Greg

+0

@greg Nếu bạn đọc mã của tôi, tôi đang làm mô-đun thời gian đó. Những gì tôi đang cố gắng tìm ra là sâu sắc hơn so với thời gian cơ bản của chương trình đầy đủ. Nó phải được hẹn giờ cho mỗi vòng lặp. – Bain

+0

Bain, sai lầm của tôi. – Greg

Trả lời

10

Khi bạn thiết lập khởi động bên ngoài vòng lặp ban đầu của bạn, bạn được đảm bảo rằng bạn đang nhận được thời gian không chính xác cần cho vòng lặp while để thực hiện. Nó sẽ giống như nói:

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

Điều này là do bắt đầu giữ nguyên cho toàn bộ thời gian thực hiện trong khi thời gian kết thúc của bạn tăng dần theo thời gian. Bằng cách đặt thời gian bắt đầu trong vòng lặp, bạn đảm bảo rằng thời gian bắt đầu của bạn cũng tăng khi chương trình chạy.

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

Tuyệt vời đây là những gì tôi cần. Bằng cách nào đó tôi đã nhận được vị trí thời gian của tôi sai lầm. Cảm ơn bạn về khái niệm này. – Bain

1

ý tưởng Đúng vậy, nhưng vị trí của bạn trong những chức năng thời gian là một chút wee tắt, tôi đã sửa chữa nó ở đây:

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() 
Các vấn đề liên quan