Пример многопоточной программы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Пример многопоточной программы

Поиск

Пример многопоточной программы

 

В следующем примере создается два дополнительных потока,которые выводят на стандартный вывод каждый свое:

 

import threading

 

def proc(n):

 

print "Процесс", n


 


p1 = threading.Thread(target=proc, name="t1", args=["1"])

 

p2 = threading.Thread(target=proc, name="t2", args=["2"]) p1.start()

 

p2.start()

 

Сначала получается два объекта класса Thread,которые затем и запускаются с

 

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

 

конструктора класса Thread.Нетрудно догадаться,что метод start() служит для запуска нового потока.Таким образом,в приведенном примере работают три потока:основной и два дополнительных(с именами "t1" и "t2").

 

Функции модуля threading

 

В модуле threading,который здесь используется,есть функции,позволяющие получить информацию о потоках:

 

· activeCount() Возвращает количество активных в настоящий момент экземпляров класса Thread.Фактически,это len(threading.enumerate()).

· currentThread() Возвращает текущий объект-поток,то есть соответствующий потоку управления,который вызвал эту функцию.Если поток не был создан через модуль threading,будет возвращен объект-поток с сокращенной функциональностью(dummy thread object).

 

· enumerate() Возвращает список активных потоков.Завершившиеся и еще не начатые потоки не входят в список.

 

Класс Thread

 

Экземпляры класса threading.Thread представляют потокиPython-программы.Задать

 

действия,которые будут выполняться в потоке,можно двумя способами:передать

 

конструктору класса исполняемый объект и аргументы к нему или путем наследования получить новый класс с переопределенным методом run().Первый способ был рассмотрен в примере выше.Конструктор класса threading.Thread имеет следующие аргументы:

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 54; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.006 с.)