Перезапуск потока Python - PullRequest
       11

Перезапуск потока Python

0 голосов
/ 22 февраля 2012

У меня есть поток, когда он запускается, он имеет бесконечный цикл.Когда другой поток остановлен, я хочу сбросить все потоки снова, Там потоки имеют сокеты, которые передают данные между собой.Я использую функцию

node1._Thread__stop()

, чтобы остановить выполнение потока, но когда я пытаюсь создать новый поток с тем же именем:

node1 = node.node(8081,8082,token,1,"Node A",0)
node1.start()

Выдает ошибку

[Errno 10048] Only one usage of each socket address (protocol/network address/port) is normally permitted.

Я не уверен, работала ли функция stop в потоках, потому что у меня есть условие тайм-аута для сокета, который, если он ничего не получает, для тайм-аута печати.Это печатается после того, как произошла ошибка.

Что будет лучшим сбросом потока / сокета

1 Ответ

0 голосов
/ 22 февраля 2012

Я не уверен, что вы ищете.Тем не менее, я рекомендую вам взглянуть на этот ответ на связанный вопрос.

Важным моментом является то, что не очень хорошая идея завершать поток, когда он содержит ресурс, такойкак розетка, как в вашем случае.Правильный способ сделать это - использовать любой из механизмов синхронизации (в приведенном выше ответе используется пример с threading.Event, но это может быть, например, threading.Condition, если это лучше соответствует вашим потребностям), доступный для выпуска.ресурс или, как вам кажется, сбросить некоторые внутренние данные, чтобы начать с нуля.

Надеюсь, это поможет.

...