2013-02-07 22 views
5

मैं थोड़ी देर के भीतर थोड़ी देर के लिए समय की कोशिश कर रहा हूं, कुल समय निष्पादित करने में लग रहा है, और ऐसा करने के लिए जितना समय लगता है, हर बार यह लूप्स करता है। यदि संभव हो तो मुझे अपने कोड का उपयोग करके इसे प्राप्त करने का एक तरीका चाहिए, या अलग-अलग अवधारणाओं के लिए खोलें जिन्हें मैं अभी तक नहीं जानता।थोड़ी देर लूप पायथन

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

पाश एक समय प्रिंट होगा, लेकिन मैं बहुत कुछ यह खाते में नेस्ट जबकि पाश सोने का समय नहीं ले रही है कर रहा हूँ। लूप के दौरान मैं पाइथन को समय पर कैसे अनुमति दे सकता हूं, हर लूप को इसे करने की आवश्यकता होगी (इस मामले में 500)?

+0

http://stackoverflow.com/questions/1557571/कैसे करने वाली मिलता है समय की एक अजगर-कार्यक्रम-निष्पादन। – Greg

+0

@greg अगर आप मेरा कोड पढ़ते हैं, तो मैं उस समय मॉड्यूल कर रहा हूं। जो मैं समझने की कोशिश कर रहा हूं वह पूर्ण कार्यक्रम के मूल समय से गहरा है। यह हर लूप के लिए समय होना चाहिए। – Bain

+0

बैन, मेरी गलती। – Greg

उत्तर

10

आपको अपने प्रारंभिक पाश आप गारंटी है कि आप हो रही है बाहर शुरू सेट करते हैं जबकि लूप को निष्पादित करने में गलत समय लगता है। यह कह रही है की तरह होगा:

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() 
संबंधित मुद्दे