Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 14, 2010 15:42:14

yurtaev
От:
Зарегистрирован: 2009-11-17
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Работа с трэдами

Пару месяцев приложение работает с трэдами ~таким образом:

# -*- coding:utf8 -*-

import threading
import time

class TestThread(threading.Thread):
""" Test class thread """
def __init__(self, name):
threading.Thread.__init__(self, name = name)
self.name = name
self.running = 1
def run(self):
while self.running:
print threading.currentThread().getName() + ' -> work'
time.sleep(3)
def say(self, text):
print self.name + ' -> say: ' + text
def exit(self):
print self.name + ' -> exit'
self.running = 0

thread_dic = {}

def create_thread(name):
""" засовываем объект трэда в dict и запускаем его """
thread_dic[name] = TestThread(name)
thread_dic[name].start()
def say_thread(name, text):
""" зная имя трэда можем обратиться к нему и выполнить функцию из него"""
thread_dic[name].say(text)
def exit_thread(name):
""" и завершить работу трэда"""
thread_dic[name].exit()

for itr in xrange(2):
""" создадим пару трэдов """
create_thread("thread"+str(itr))
time.sleep(1)

say_thread("thread1", "hello") # пусть трэд с именем thread1 скажет hello
exit_thread("thread1") # и завершит работу
say_thread("thread0", "test message")
exit_thread("thread0")
Всё работает отлично, и для меня удобно. Вот хочу спросить насколько это правильно, интересно ваше мнение, или я изобрел велосипед общеизвестный.
P.S у меня задача стояла что в каждом трэде запущен «бот» который отдельно подключается к серверу и от его имени отсылает\принимает сообщения.



Офлайн

#2 Окт. 14, 2010 16:54:30

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Работа с трэдами

Конечно же велосипед :)
Кстати, а где .join?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version