Модуль потоков threading

Обновлено: 2024-03-12
2 мин

Содержание

Модуль threading в Python предоставляет возможность создавать и управлять потоками выполнения. Потоки - это легковесные процессы, которые выполняются параллельно в пределах одного процесса, что позволяет лучше использовать ресурсы компьютера.

Для создания нового потока необходимо создать объект Thread и передать в его конструктор функцию, которую вы хотите запустить в отдельном потоке. Затем вызовите метод start() у этого объекта, чтобы запустить поток. Если вы хотите дождаться завершения потока, вызовите метод join(), который блокирует текущий поток, пока поток, на который вы вызываете join(), не завершится.

Пример использования модуля threading:

from time import sleep
import threading

def print_numbers():
    for i in range(10):
        sleep(1) # задержка печати для примера
        print(i)

def print_letters():
    for letter in ['a', 'b', 'c', 'd', 'e']:
        print(letter)

if __name__ == '__main__':
t1 = threading.Thread(target=print_numbers)
t2 = threading.Thread(target=print_letters)

t1.start()
t2.start()
print("Done!")
t1.join()
t2.join()

print("Done!")

Мы создали две функции print_numbers() и print_letters(), каждая из которых печатает набор символов в консоль. Затем мы создали два потока, один для каждой из этих функций, и запустили их, вызвав метод start(). Затем мы дождались завершения каждого потока, вызвав метод join(), и напечатали сообщение “Done!”.

В последнем примере кода мы увидим, что каждый поток будет печатать свою информацию в консоль, в произвольном порядке, так как потоки будут конкурировать за доступ к ресурсу (в данном случае, к выводу в консоль).

Результат может отличаться от запуска к запуску программы, так как порядок выполнения потоков не гарантирован и зависит от того, как ОС распределяет ресурсы между потоками.

Модуль threading также предоставляет другие полезные классы, такие как Lock, Condition, Semaphore, которые помогают управлять доступом к ресурсам между несколькими потоками.