程式暫停python - 如何在Python中延遲時間?




python等待時間 (9)

我想知道如何在Python腳本中加時間延遲。


如何在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() ,許多答案已經指出,這是要走的路。


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

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

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

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

 driver.implicitly_wait(5)

當您必須等到特定操作完成或找到元素時,第三種方法更有用:

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

延遲Python時間的最佳方法是使用time庫。 像這樣:

import time
time.sleep(10)

只需用你想要延遲的秒數替換10即可。 您可以使用'10 .1','5.07'等格式。

不建議將其與Tkinter一起使用


您可以在時間模塊中使用sleep()函數。 它可以採用浮動參數進行亞秒級分辨率。

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

我知道有4種方法: pygame.time.wait()pygame.time.wait() ,matplotlib的pyplot.pause()pyplot.pause() .after()

time.sleep()示例(如果使用Tkinter則不要使用):

import time
print('Hello')
time.sleep(5) #number of seconds
print('Bye')

pygame.time.wait()示例(如果您沒有使用pygame窗口,則不推薦,但您可以立即退出窗口):

import pygame
#If you are going to use the time module
#don't do "from pygame import *"
pygame.init()
print('Hello')
pygame.time.wait(5000)#milliseconds
print('Bye')

matplotlib的函數pyplot.pause()示例(如果您不使用圖形,則不推薦,但您可以立即退出圖形):

import matplotlib
print('Hello')
matplotlib.pyplot.pause(5)#seconds 
print('Bye')

最後, .after()方法(最好用Tkinter):

import tkinter as tk #Tkinter for python 2
root = tk.Tk()
print('Hello')
def ohhi():
 print('Oh, hi!')
root.after(5000, ohhi)#milliseconds and then a function
print('Bye')

這是一個時間延遲的簡單示例:

import time

def delay(period='5'):
    # If the user enters nothing, It'll wait 5 seconds
    try:
        #If the user not enters a int, I'll just return ''
        time.sleep(period)
    except:
        return ''

另一個,在Tkinter:

import tkinter

def tick():
    pass

root=Tk()
delay=100 # time in milliseconds
root.after(delay,tick)
root.mainloop()

雖然其他人都提出了事實上的time模塊,但我想我會使用matplotlibpyplot函數共享一個不同的方法, pause

一個例子

from matplotlib import pyplot as plt
plt.pause(5)    # Pauses the program for 5 seconds

通常,這用於防止繪圖一經繪製就消失或生成粗動畫。

如果您已經importmatplotlib這將為您節省導入。


import time
time.sleep(5)   # Delays for 5 seconds. You can also use a float value.

這是另一個例子,大約每分鐘運行一次:

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




timedelay