Потоки (Threading) в Python

Что такое поток?

Поток исполнения является наименьшим последовательность запрограммированных инструкций , которые могут управляться независимо друг от друга с помощью планировщика , который обычно является частью операционной системы. Поток в компьютерной программе - это путь выполнения. Threading создает дополнительные независимые пути выполнения в вашей программе. Каждая программа начинается с хотя бы одного пути выполнения / потока. Вы можете создавать больше потоков для выполнения параллельных задач в зависимости от ваших требований. Это концепция эффективного использования ресурсов . Наличие нескольких потоков в приложении обеспечивает два очень важных потенциальных преимущества:

Улучшение восприимчивости приложения.

Улучшите производительность приложений в режиме реального времени в многоядерных системах.
Для этого есть библиотеки. Важно отметить, что Threading требует тщательной синхронизации, чтобы избежать условий гонки.

Как создать поток в Python

Модуль «поток» обеспечивает простую функциональность, и более высокий уровень интерфейса предоставляется в потоковом модуле, который должен использоваться вместо этого. Первое, что вам нужно сделать, это импортировать Thread, используя следующий код:

from threading import Thread

Простая программа Thread

В следующем примере показано, как запустить функцию как потоки в Python. Самый простой способ - через модуль потока и его метод start_new_thread() .

def yourFunc():
print "Funcion called!!"
thread.start_new_thread(yourFunc,())

Thread.start_new_thread начать новую нить и возвращает его идентификатор. Когда функция возвращается, поток бесшумно выходит.

Пример:

import time
from threading import Thread
def myfunc(i):
print ("Before Sleep :", i)
time.sleep(5)
print ("After Sleep :", i)
for i in range(10):
t = Thread(target=myfunc, args=(i,))
t.start()

Создание класса Thread в Python

Python предоставляет модуль потоковой передачи, который реализует слой поверх модуля потока . Модуль потоковой передачи предоставляет, помимо прочего, класс Thread, который содержит метод run() . Типичное использование заключается в подклассе класса Thread и переопределении метода run() в подклассе для реализации требуемой функциональности. Чтобы создать поток в Python, вы хотите, чтобы ваш класс работал как поток. Для этого вы должны подклассифицировать свой класс из класса Thread .

class MyThreadClass(threading.Thread):
def run(self):

Здесь MyThreadClass является дочерним классом класса Thread . Следующий шаг - определить метод запуска в этом классе. Метод run() в MyThreadClass является точкой входа для потока. Метод run() будет выполнен, когда мы вызываем метод начала любого объекта в нашем классе MyThreadClass. Вы можете написать код внутри метода run() для запуска потока. Можно передать функцию или другой вызываемый объект в конструктор класса Thread, чтобы указать цель, которую вызовет метод run(). Для этого мы можем использовать функцию thread.start_new_thread :

t = MyThreadClass()
t.start()

Полный код

import threading
import datetime
class MyThreadClass(threading.Thread):
def run(self):
dt = datetime.datetime.now()
print (self.getName(), " Current Date and Time : ", dt)
for i in range(5):
t = MyThreadClass()
t.start()

Вывод:

Thread-1 Current Date and Time : 2015-10-04 17:09:48.423745
Thread-2 Current Date and Time : 2015-10-04 17:09:48.423745
Thread-3 Current Date and Time : 2015-10-04 17:09:48.423745
Thread-4 Current Date and Time : 2015-10-04 17:09:48.423745
Thread-5 Current Date and Time : 2015-10-04 17:09:48.423745

В приведенном выше примере вы можете видеть, что класс ThreadClass наследует от threading.Thread, и из-за этого вам нужно определить метод run(), который выполняет код, который вы запускаете внутри потока. Единственное, что важно отметить в методе run: self.getName() - это метод, который идентифицирует имя потока. Наконец, t.start() - это то, что фактически запускает потоки.

 

 

 

Источник: net-informations.com

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector