我怎樣才能在Python中延遲時間?


我想知道如何在Python腳本中放一段時間。



Answers



import time
time.sleep(5)   # delays for 5 seconds. You can Also Use Float Value.

以下是另一個例子,其中每分鐘運行一次:

import time 
while True:
    print("This prints once a minute.")
    time.sleep(60)   # Delay for 1 minute (60 seconds).



您可以在時間模塊中使用sleep()函數。 對於第二個分辨率,它可以採用浮點型參數。

from time import sleep
sleep(0.1) # Time in seconds.



請閱讀https://web.archive.org/web/20090207081238/http://faqts.com/knowledge_base/view.phtml/aid/2609/fid/378 ,這可以幫助您進一步:

嘗試在時間模塊中的睡眠功能。

import time
time.sleep(60)

並把它放在一個while循環中,一個語句只能在一分鐘內執行......這樣,無論命令需要多長時間(只要不到一分鐘或5或60分鐘或者你設置的任何東西)例如,我想每分鐘運行一次ping。 如果我只time.sleep(60)time.sleep(45) ,ping不會總是花費相同的時間。 這是代碼:)

time.sleep(time.localtime(time.time())[5])

[5]只是拉出time.localtime()的返回值。

time.sleep是它支持浮點數!

import time
time.sleep(0.1) 

http://python.org/doc/current/lib/module-time.html




昏昏欲睡的發電機有點兒樂趣

問題是關於時間延遲。 它可以是固定的時間,但在某些情況下,我們可能需要從上次測量的延遲。 這是一個可能的解決方案:

自上次測量延遲(定期醒來)

情況可能是,我們希望盡可能經常做一些事情,而且我們不想在所有代碼周圍都用last_timenext_time

蜂鳴器發生器

以下代碼( sleepy.py )定義了buzzergen gerenarator

import time
from itertools import count

def buzzergen(period):
    nexttime = time.time() + period
    for i in count():
        now = time.time()
        tosleep = nexttime - now
        if tosleep > 0:
            time.sleep(tosleep)
            nexttime += period
        else:
            nexttime = now + period
        yield i, nexttime

調用常規蜂鳴器

from sleepy import buzzergen
import time
buzzer = buzzergen(3) # planning to wake up each 3 seconds
print time.time()
buzzer.next()
print time.time()
time.sleep(2)
buzzer.next()
print time.time()
time.sleep(5) # sleeping a bit longer than usually
buzzer.next()
print time.time()
buzzer.next()
print time.time()

並運行它我們看到:

1400102636.46
1400102639.46
1400102642.46
1400102647.47
1400102650.47

我們也可以直接在循環中使用它:

import random
for ring in buzzergen(3):
    print "now", time.time()
    print "ring", ring
    time.sleep(random.choice([0, 2, 4, 6]))

並運行它我們可能會看到:

now 1400102751.46
ring (0, 1400102754.461676)
now 1400102754.46
ring (1, 1400102757.461676)
now 1400102757.46
ring (2, 1400102760.461676)
now 1400102760.46
ring (3, 1400102763.461676)
now 1400102766.47
ring (4, 1400102769.47115)
now 1400102769.47
ring (5, 1400102772.47115)
now 1400102772.47
ring (6, 1400102775.47115)
now 1400102775.47
ring (7, 1400102778.47115)

正如我們所看到的那樣,這個蜂鳴器不是太僵化,即使我們睡過頭了,也沒有經常的時間安排,我們可以趕上定期的睡眠時間間隔。




我怎樣才能在Python中延遲時間?

在單線程中,我建議睡眠功能:

>>> from time import sleep

>>> sleep(4)

這實際上暫停了操作系統調用的線程的處理,允許其他線程和進程在睡眠時執行。

為此目的使用它,或者簡單地延遲執行的功能。 例如:

>>> def party_time():
...     print('hooray!')
... 
>>> sleep(3); party_time()
hooray!

“萬歲!” 我按Enter鍵 3秒後打印。

使用多個線程和進程的sleep示例

再次, sleep暫停你的線程 - 它使用接近零的處理能力。

為了演示,創建一個像這樣的腳本(我首先在一個交互式的Python 3.5 shell中嘗試了這個,但是由於某種原因,子進程找不到party_later函數):

from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor, as_completed
from time import sleep, time

def party_later(kind='', n=''):
    sleep(3)
    return kind + n + ' party time!: ' + __name__

def main():
    with ProcessPoolExecutor() as proc_executor:
        with ThreadPoolExecutor() as thread_executor:
            start_time = time()
            proc_future1 = proc_executor.submit(party_later, kind='proc', n='1')
            proc_future2 = proc_executor.submit(party_later, kind='proc', n='2')
            thread_future1 = thread_executor.submit(party_later, kind='thread', n='1')
            thread_future2 = thread_executor.submit(party_later, kind='thread', n='2')
            for f in as_completed([
              proc_future1, proc_future2, thread_future1, thread_future2,]):
                print(f.result())
            end_time = time()
    print('total time to execute four 3-sec functions:', end_time - start_time)

if __name__ == '__main__':
    main()

此腳本的輸出示例:

thread1 party time!: __main__
thread2 party time!: __main__
proc1 party time!: __mp_main__
proc2 party time!: __mp_main__
total time to execute four 3-sec functions: 3.4519670009613037

多線程

您可以觸發一個函數,稍後在具有Timer線程對象的單獨線程中調用該函數:

>>> from threading import Timer
>>> t = Timer(3, party_time, args=None, kwargs=None)
>>> t.start()
>>>
>>> hooray!

>>> 

空白行說明了打印到我的標準的功能,我不得不按Enter鍵,以確保我在一個提示。

這個方法的好處是,當Timer線程正在等待的時候,我可以做其他事情,在這種情況下,在函數執行之前(見第一個空提示符)敲一次Enter

多處理庫中沒有相應的對象。 您可以創建一個,但可能不存在原因。 一個子線程對於一個簡單的計時器來說比一個全新的子進程更有意義。




Python標準庫中的tkinter庫是一個可導入的交互式工具。 基本上,您可以創建按鈕,框和彈出窗口,以及用代碼操作的窗口。

如果你使用TIME.SLEEP() ,不要使用TIME.SLEEP()因為它會把你的程序TIME.SLEEP() 。 這發生在我身上。 相反,請使用root.after()然後用毫秒代替數秒的值。 例如, root.after(1000) time.sleep(1)等同於root.after(1000)

否則, time.sleep() ,許多答案指出,這是要走的路。




要延遲時間,您應該導入time模塊。 而用這個模塊你只需要寫:

time.sleep(The amount of time)

例如,如果要在計算機運行另一行之前放一秒的時間延遲,則應該放置:

time.sleep(1)
print('Hello World!')

就這樣 :)




好問題。

你可以通過簡單的做到這一點:

from time import sleep

# doing stuff
sleep(0.5) # sleeping half a second (sleep() uses seconds, but you can also use floats)
# doing stuff..

希望,我可以幫忙。




延遲時間庫 ,特別是time.sleep()函數...

為了讓它等待一秒鐘:

from time import sleep
sleep(1)

這是有效的,因為通過做:

from time import sleep

只能時間庫中提取睡眠函數 ,這意味著你可以調用它:

sleep(seconds)

而不必輸入:

time.sleep()

這是很難打字的。

使用這種方法,您將無法訪問時間庫的其他功能,並且不能使用名為sleep的變量。 但是你可以創建一個叫做time的變量。

如果你只想要一個模塊的某些部分,那麼從[library] import [function](,[function2])做得很好。

你也可以這樣做:

import time
time.sleep(1)

而且只要輸入時間,就可以訪問time.clock()時間庫的其他功能 函數,但不能創建可變時間。




延遲可以通過使用三種方法來實現。

讓我們從最簡單的一個開始:

import time
time.sleep(5) #delay for 5 seconds.

第二種延遲方法是使用隱式等待方法。

 driver.implicitly_wait(5)

第三種方法更有用,當你必須等待某個特定的動作完成或者直到找到一個元素。

self.wait.until(EC.presence_of_element_located((By.ID, 'UserName'))



使用pygame

import pygame
pygame.init()
while True:
    pygame.time.wait(1000)
    print("This prints every second.")
    print("Please note that this method uses milliseconds.")