2013-05-15 10 views
7

अगर मैं एक सूची एल है:मैं पाइथन में लूप कैसे धीमा कर सकता हूं?

l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 

वहाँ पिछले के बाद निम्नलिखित पाश के लिए ताकि सूची में अगले तत्व केवल छपा है एक दूसरे को नियंत्रित करने के लिए एक रास्ता है?

for i in l: 
    print i 

दूसरे शब्दों में, क्या पाइथन में लूप को सुंदर तरीके से धीमा करने का कोई तरीका है?

+9

च है कि बेकार, ज्यादातर लोग जानना चाहते हैं कि उनके लूप को _speed कैसे करें! –

+1

मुझे लगता है कि यह मेरे पुराने ट्रेओ 300 पर चल रहा है, लूप को धीमा करने का एक अच्छा तरीका है ... – abarnert

+0

अधिक गंभीरता से, यदि आप यह देखने की कोशिश कर रहे हैं कि क्या हो रहा है, तो आप डीबगर या इंटरैक्टिव विज़ुअलाइज़र में चलने का प्रयास करना चाहेंगे, बस 'नींद' कॉल में फेंकने की बजाए। – abarnert

उत्तर

13

आप उपयोग कर सकते हैं time.sleep

import time 

for i in l: 
    print i 
    time.sleep(1) 
3

time.sleep फ़ंक्शन का उपयोग करें। अपने फ़ंक्शन में बस time.sleep(1) करें।

5

आप time.sleep का उपयोग कर कोड निष्पादन को रोक सकते हैं:

import time 

for i in l: 
    print(i) 
    time.sleep(1) 
9

आप time.sleep(1) उपयोग करते हैं, अपने छोरों पाशन और मुद्रण के बाद से एक दूसरे से कुछ ज्यादा चलेंगे कुछ समय भी लेता है। दूसरे के शेष के लिए सोने का एक बेहतर तरीका है। आप -time.time()%1

>>> import time 
>>> L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 
>>> for i in L: 
...  time.sleep(-time.time()%1) 
...  print i 
... 

का उपयोग करके कि गणना कर सकते हैं यह print i, repr(time.time())

>>> for i in L: 
...  time.sleep(-time.time()%1) 
...  print i, repr(time.time()) 
... 
0 1368580358.000628 
1 1368580359.001082 
2 1368580360.001083 
3 1368580361.001095 
4 1368580362.001149 
5 1368580363.001085 
6 1368580364.001089 
7 1368580365.001086 
8 1368580366.001086 
9 1368580367.001085 

बनाम

का उपयोग कर
>>> for i in L: 
...  time.sleep(1) 
...  print i, repr(time.time()) 
... 
0 1368580334.104903 
1 1368580335.106048 
2 1368580336.106716 
3 1368580337.107863 
4 1368580338.109007 
5 1368580339.110152 
6 1368580340.111301 
7 1368580341.112447 
8 1368580342.113591 
9 1368580343.114737 
+2

सटीक दूसरे चिह्न पर संरेखित करने के लिए इसे मजबूर करने के अलावा, यह भी मानता है कि 'time.time' और' time.sleep' की लागत नगण्य है, लेकिन 'प्रिंट' का समय महत्वपूर्ण है, और 'नींद' सटीक है प्रासंगिक पैमाने पर, जिनमें से दोनों अधिकांश प्लेटफ़ॉर्म पर सत्य होने की संभावना नहीं है ... – abarnert

+0

@abarnert, 'time.time()' और 'time.sleep() 'के कारण का समय काफी हद तक कोई फर्क नहीं पड़ता संगत। 'नींद() 'वैसे भी सटीक समय के लिए गारंटी प्रदान नहीं करता है। –

+0

आपकी टिप्पणी का दूसरा भाग मुख्य बिंदु है। 'नींद' सटीक या सटीक नहीं है इससे कोई फर्क नहीं पड़ता कि आप क्या करते हैं। यह आसानी से अगले '.000' अंक से सो सकता है, जिसका अर्थ है कि आपका कोड एक दूसरे सेकेंड को खो देगा, जबकि" गूंगा "कोड केवल 50us खो देगा। क्या यह वास्तव में एक सुधार है? वास्तव में यह सही करने के लिए आपको अधिक जटिल तर्क की आवश्यकता है (मूल रूप से, _until_ को सोने के समय का ट्रैक रखें, ताकि आप oversleep के लिए सही कर सकें)। बहुत कम स्थितियां हैं जहां 'नींद (1) 'पर्याप्त नहीं है, लेकिन' नींद (-टाइमटाइम()% 1)' है। – abarnert

-4

उपयोग time.sleep(number) द्वारा इस निरीक्षण करने के लिए आसान है:

for i in range(i) 
print(1) 
time.sleep(0.05) 
+3

नेक्रो-पोस्टिंग ठीक है, अगर यह कुछ अतिरिक्त मूल्य लाती है, लेकिन यह उत्तर इस मामले पर ऐसी कोई प्रकाश नहीं लाता है: कोड भी काम नहीं करता है। – trincot

संबंधित मुद्दे