Рубрики
Без рубрики

Python Multi-Threading Учебник

Автор оригинала: 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 с помощью хорошо подробных примеров.