LINUX.ORG.RU

[python]threads

 


0

1

Есть класс примерно след вида:

class MyThread(Thread)

def __init__ (self):
Thread.__init__(self)
....

def check():
return self.status

def stop():
self.status = 'stop';

def run (self):
while(1):
if (self.status == 'stop'):
break

Создается он так на сервере:
t = MyThread
t.start()

, переодически проверяется статус на клиенте:
while(1):
MyThread.check()

ну и для стопа Thread:
MyThread.stop()
MyThread.join()

Вопрос в след:
В бесконечном цикле while Thread нужно иногда выйти с соотв статусом и этот статус показать на клиенте. Т е т к check запускается асинхронно соотв он отловить это не может. Как это отловить ?

И что все таки лучше использовать thread или multiprocessing ? (слышал что не рекомендуется все время создавать/удалять thread )

★★☆☆

Последнее исправление: SI (всего исправлений: 1)

Надеюсь, ты понимаешь, что у тебя «клиент» выполняется в плотном цикле?

check запускается асинхронно соотв он отловить это не может. Как это отловить ?

join

слышал что не рекомендуется все время создавать/удалять thread

Насколько я помню, насильно завершить нить просто невозможно.

tailgunner ★★★★★
()

def run (self): while(1): if (self.status == 'stop'): break

Сожрет весь проц. Слипы сделай, если хочешь костылей, а вообще join.

tanenn
()

thread или multiprocessing?

Я бы все же проголосовал за multiprocessing, хотя смотря какие задачи.

BigAlex ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.