Функцията за заспиване на Python - Как да накарате Python да изчака няколко секунди, преди да продължи, с примерни команди

Можете да използвате sleep()функцията на Python, за да добавите времезакъснение към вашия код.

Тази функция е удобна, ако искате да поставите на пауза кода си между извикванията на API, например. Или подобрете практическата работа на потребителя, като добавите паузи между думи или графики.

from time import sleep sleep(2) print("hello world") 

Когато стартирам горния код, има около две секунди закъснение преди отпечатване на "здравей свят".

Изпитвам закъснение, защото sleep()спира „изпълнението на извикващата нишка“ за предоставен брой секунди (въпреки че точното време е приблизително). Така изпълнението на програмата е на пауза за около две секунди в горния пример.

В тази статия ще научите как да приспивате своя код на Python.

Подробностите за съня

Модулът за време на Python съдържа много свързани с времето функции, една от които е sleep(). За да използвате sleep (), трябва да го импортирате.

from time import sleep 

sleep () отнема един аргумент: секунди. Това е времето (в секунди), през което искате да забавите кода си.

seconds = 2 sleep(seconds) 

Спете в действие

Сега нека използваме sleep()по няколко различни начина.

След като импортирам съня от timeмодула, ще се отпечатат два реда текст. Въпреки това ще има приблизително две секунди закъснение между отпечатването на всеки ред.  

from time import sleep print("Hello") sleep(2) print("World") 

Ето какво се случи, когато пуснах кода:

"Hello"Този ред се отпечатва веднага.

След това имаше приблизително две секунди закъснение.

"World" Този ред се отпечатва около две секунди след първия.

Можете да бъдете прецизни

Определете времето си за забавяне, като предадете число с плаваща запетая на sleep().

from time import sleep print("Prints immediately.") sleep(0.50) print("Prints after a slight delay.") 

Ето какво се случи, когато пуснах кода:

"Prints immediately." Този ред се отпечатва незабавно.

След това имаше забавяне от около 0,5 секунди.

"Prints after a slight delay." Този ред се отпечатва около 0,5 секунди след първия.

Създайте клеймо за време

Ето още един пример за разглеждане.

В кода по-долу създавам пет клейма. Използвам, за sleep()да добавя закъснение от приблизително една секунда между всеки клеймо.

import time for i in range(5): current_time = time.localtime() timestamp = time.strftime("%I:%m:%S", current_time) time.sleep(1) print(timestamp) 

Тук импортирам целия модул за време, за да имам достъп до множество функции от него, включително sleep ().

import time 

След това създавам цикъл for, който ще повтори пет пъти.

for i in range(5): ... 

При всяка итерация получавам текущото време.

current_time = time.localtime() 

Получавам клеймо с помощта на друга функция в модула за време strftime(),.

timestamp = time.strftime("%I:%m:%S", current_time) 

Следва функцията sleep (), която ще доведе до забавяне при всяка итерация на цикъла.

time.sleep(1) 

Когато стартирам програмата, изчаквам около секунда, преди да се отпечата първият клеймо. След това изчаквам около секунда, за да се отпечата следващият клеймо и така, докато цикълът приключи.

Резултатът изглежда така:

04:08:37 04:08:38 04:08:39 04:08:40 04:08:41 

sleep () и потребителския опит

Друг начин за използване sleep()е да се подобри опитът на потребителя чрез създаване на известно напрежение.

from time import sleep story_intro = ["It", "was", "a", "dark", "and", "stormy", "night", "..."] for word in story_intro: print(word) sleep(1) 

Тук преглеждам списъка с думи в story_intro. За да добавя съспенс, използвам функцията sleep (), за да забавя с около секунда след отпечатване на всяка дума.

time.sleep(1) 

Въпреки че скоростта на изпълнение често е на преден план в нашите умове, понякога си струва да се забави и да се добави пауза в нашия код. Когато възникнат тези поводи, вие знаете към какво да стигнете и как работи.

Пиша за учене на програмиране и най-добрите начини да го направя на amymhaddad.com. Туитвам за програмирането, ученето и производителността: @amymhaddad.