Найти - Пользователи
Полная версия: Работа с трэдами
Начало » Python для экспертов » Работа с трэдами
1
yurtaev
Пару месяцев приложение работает с трэдами ~таким образом:
# -*- 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 у меня задача стояла что в каждом трэде запущен «бот» который отдельно подключается к серверу и от его имени отсылает\принимает сообщения.
Андрей Светлов
Конечно же велосипед :)
Кстати, а где .join?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB