Многопоточност чрез пример - модул за резби

Python включва редица различни паралелни конструкции като резбоване, опашки и многообработка. Модул резбоване използвани като основен начин за постигане на паралелизъм. Преди няколко години многопроцесорният модул беше добавен към стандартния библиотечен пакет на Python. В тази статия ще се съсредоточим върху това как да използваме опашки и нишки.

Използване на потоци

Ще започнем с прост пример, който показва как работят нишките. Ще наследим класа Thread от класа MyThread и ще посочим, че името му се показва като stdout. Да опитаме!

В този код импортирахме произволните и времеви модули и също така импортирахме класа Thread от модула за резби на Python. След това наследяваме класа Тема, и замени своя метод __init__, за да приеме аргумент, наречен име. За да стартирате поток, трябва да извикате метода старт().

След стартиране на нишката той автоматично ще извика метода бягай. Предефинирахме метод на изпълнение така че той избира случаен момент за "сън". Пример произволен.пранд казва на Python да избере произволно число между 3 и 15. След това казваме на нишката да „заспи“ толкова секунди, колкото е избрана на случаен принцип, за да симулира как действително работи. След това въведохме името на потока, за да кажем на потребителя, че е приключил. Функция create_threads ще създаде 5 нишки, давайки на всяка от тях уникално име. Ако стартирате този код, ще видите нещо подобно:

Изходният ред ще бъде различен всеки път. Опитайте да стартирате кода няколко пъти, за да видите промяната на реда. Сега нека напишем нещо по-практично.!

Писане на стрийминг товарач

Предишният пример не беше много полезен като инструмент за показване как точно работят нишките на Python. Така че в този пример ще създадем клас Thread, който изтегля паралелно файлове от интернет. Ще използваме безплатен ресурс в нашата демонстрация. Нека да разгледаме кода: