Thread(group, target, name, args, kwargs) 


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



ЗНАЕТЕ ЛИ ВЫ?

Thread(group, target, name, args, kwargs)

Поиск

Thread(group, target, name, args, kwargs)

 

 

Здесь group-группа потоков(пока что не используется,должен быть равен None),target- объект, который будет вызван в методе run(), name - имя потока, args и kwargs -

 

последовательность и словарь позиционных и именованных параметров(соответственно)для вызова заданного в параметре target объекта.В примере выше были использованы

только позиционные параметры,но то же самое можно было выполнить и с применением именованных параметров:

 

import threading

 

def proc(n):

 

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

 

p1 = threading.Thread(target=proc, name="t1", kwargs={"n": "1"})

 

p2 = threading.Thread(target=proc, name="t2", kwargs={"n": "2"}) p1.start()

 

p2.start()

 


То же самое можно проделать через наследование от класса threading.Thread с определением собственного конструктора и метода run():

 

import threading

 

class T(threading.Thread): def __init__(self, n):

 

threading.Thread.__init__(self, name="t" + n) self.n = n

def run(self):

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

 

p1 = T("1")

 

p2 = T("2") p1.start() p2.start()

 

 

Самое первое,что необходимо сделать в конструкторе-вызвать конструктор базового класса.Как и раньше,для запуска потока нужно выполнить метод start() объекта-потока,что приведет к выполнению действий в методе run().

 

Жизнью потоков можно управлять вызовом методов:

 

· start()Дает потоку жизнь.

 

· run()Этот метод представляет действия,которые должны быть выполнены в потоке.

 

· join([timeout])Поток,который вызывает этот метод,приостанавливается,ожидая завершения потока,чей метод вызван.Параметр timeout(число с плавающей точкой)позволяет указать время ожидания(в секундах),по истечении которого

 

приостановленный поток продолжает свою работу независимо от завершения потока,чей метод join был вызван.Вызывать join() некоторого потока можно много раз.Поток не может вызвать метод join() самого себя.Также нельзя ожидать завершения еще не запущенного потока.Слово"join"в переводе с английского означает"присоединить",то есть,метод,вызвавший join(),желает,чтобы поток по завершении присоединился к вызывающему метод потоку.

 

· getName()Возвращает имя потока.Для главного потока это "MainThread".

 

· setName(name)Присваивает потоку имя name.

 

· isAlive()Возвращает истину,если поток работает(метод run() уже вызван,но еще не завершился).

 

· isDaemon()Возвращает истину,если поток имеет признак демона.Программа наPython завершается по завершении всех потоков, не являющихся демонами. Главный поток демоном не является.

 

· setDaemon(daemonic)Устанавливает признак daemonic того,что поток является демоном.Начальное значение этого признака заимствуется у потока,запустившего данный.Признак можно изменять только для потоков,которые еще не запущены.

 

В модуле Thread пока что не реализованы возможности,присущие потокам вJava

(определение групп потоков, приостановка и прерывание потоков извне, приоритеты и некоторые другие вещи),однако они,скорее всего,будут созданы в недалеком будущем.

 



Поделиться:


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

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