Автор оригинала: Python Examples.
Многопоточья в Python
Метугольник – это концепция выполнения различных кусков кода одновременно. Нить – это объект, который может работать на процессоре индивидуально со своим собственным уникальным идентификатором, стеком, указателем стека, счетчиком программы, состоянием, зарегистрированным набором и указателем на блок управления процессом процесса.
В этом руководстве мы учимся с примерами о том, как сделать многопоточье в программировании Python.
резьба Модуль используется для достижения многопоточьего в Python.
Создать тему
Чтобы создать тему, вы можете использовать Threading.Thread () класс. Синтаксис потока () класса:
threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)
- уйти Группа не так.
- цель Является ли Callable объектом, который будет вызван методом Run () потока.
- Имя Имя потока, которое вы можете предоставить и обратиться к позже в программе.
- args это аргумент кортеля для целевого вызова.
- кварги Это словарь аргументов ключевых слов для целевого вызова.
- демон Нет, нет, будет установлен как демонический.
Начать нить
После того, как вы создали нить с помощью Thread () класса, вы можете начать его использовать метод Thread.Start ().
t1 = threading.Thread() t1.start()
Подождите, пока нить не закончится
Вы можете сделать счетчик программы главного процесса, чтобы подождать, пока не закончится определенная нить. Все, что вам нужно сделать, это позвоните присоединиться к способу () на объекте потока.
t1.join()
Выполнение в основной программе ожидает здесь в этом операторе, пока T1 не завершит целевое исполнение.
Пример – Python MultiPhreading с двумя потоками
В следующем примере мы будем делать многопоточь с двумя потоками. Каждый поток работает параллельно другому и выполняется всякий раз, когда для него доступны ресурсы обработки.
Чтобы полностью продемонстрировать это поведение, мы запустим функцию в каждом потоке, которая печатает и твоей.
Python Program
import threading def print_one(): for i in range(10): print(1) def print_two(): for i in range(10): print(2) if __name__ == "__main__": # create threads t1 = threading.Thread(target=print_one) t2 = threading.Thread(target=print_two) # start thread 1 t1.start() # start thread 2 t2.start() # wait until thread 1 is completely executed t1.join() # wait until thread 2 is completely executed t2.join() # both threads completely executed print("Done!")
Выход
1 1 1 2 2 2 1 1 2 1 2 2 2 2 2 2 1 1 1 1 Done!
Вы можете наблюдать, что после того, как Thread1 выполнил петлю для трех итераций, Three2 имеет ресурсы и начал выполнять. Это очень невероятно, чтобы предсказать количество времени, которое может получить нить для выполнения.
Пример – многопоточность с аргументами, передаваемыми к потокам
В нашем предыдущем примере мы начали темы только с их целями. Теперь мы пройдем им некоторые аргументы. Кроме того, вы можете назвать ту же цель для разных потоков.
Python Program
import threading def print_x(x, n): for i in range(n): print(x) if __name__ == "__main__": # create threads t1 = threading.Thread(target=print_x, args=(1, 5,)) t2 = threading.Thread(target=print_x, args=(2, 10,)) # start thread 1 t1.start() # start thread 2 t2.start() # wait until thread 1 is completely executed t1.join() # wait until thread 2 is completely executed t2.join() # both threads completely executed print("Done!")
Выход
1 1 1 2 2 2 2 1 2 1 2 2 2 2 2 Done!
Резюме
В этом учете примеров Python мы узнали, как реализовать многопоточь в программировании Python с помощью хорошо подробных примеров.