Эта функция фактически приостанавливает обработку потока, в котором она вызывается операционной системой, позволяя другим потокам и процессам выполняться, пока она находится в спящем режиме.
Используйте его для этой цели или просто для задержки выполнения функции. Например:
"ура!" печатается через 3 секунды после нажатия Enter.
Пример использования sleep с несколькими потоками и процессами
Опять же, sleep приостанавливает ваш поток - он использует почти нулевую вычислительную мощность.
Для демонстрации создайте подобный скрипт (я впервые попробовал это в интерактивной оболочке Python 3.5, но подпроцессы по какой-то причине не могут найти party_later функцию):
from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecutor, as_completed from time import sleep, time
defparty_later(kind='', n=''): sleep(3) return kind + n + ' party time!: ' + __name__
defmain(): 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
Многопоточность
Вы можете вызвать функцию для последующего вызова в отдельном потоке с помощью объекта Timerthreading:
>>> from threading import Timer >>> t = Timer(3, party_time, args=None, kwargs=None) >>> t.start() >>> >>> hooray!
>>>
Пустая строка показывает, что функция выводила данные в моем стандартном выводе, и мне пришлось нажать Enter, чтобы убедиться, что я попал в запрос.
Плюсом этого метода является то, что пока Timer поток ожидал, я мог делать другие вещи, в данном случае, нажимая Enter один раз - перед выполнением функции (см. Первое пустое приглашение).
В многопроцессорной библиотеке нет соответствующего объекта. Вы можете создать его, но, вероятно, он не существует по какой-то причине. Подпоток имеет гораздо больше смысла для простого таймера, чем целый новый подпроцесс.
Ответ 4
Задержки также могут быть реализованы с помощью следующих методов.
Первый метод:
import time time.sleep(5) # Delay for 5 seconds.
Вторым методом задержки было бы использование неявного метода wait:
driver.implicitly_wait(5)
Третий метод более полезен, когда вам приходится ждать, пока не будет выполнено определенное действие или пока не будет найден элемент: