Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2014 01:32:52

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Завершение потока

Soteric
Насколько я понял документацию, демон треды должны завершаться автоматически.
Вы, безусловно, поняли правильно, наверно мне следовало хотя бы взять в кавычки последнее упоминание о демоне. Я имел ввиду, что нет гарантии освобождения занятых ресурсов, т.е. для конкретной задачи, поставленной ТС, данный вариант не приемлем, ИМХО.



Офлайн

#2 Фев. 5, 2014 01:46:38

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Завершение потока

gevg
возможно и правильнее, но лично мне неособо понятнее
Это же Ваш код, я только имена полей изменил :)
# имена хостов, номера портов и прочее лучше хранить в каком-нибудь конфиге,
# а не в тексте скрипта. Объект clients - это некое подобие конфига
clients = (("host.example", "6666", "1"), ("host2.example", "7777", "2"))
# событие, указывающее на необходимость завершения работы потоков
finished = threading.Event()
# создаем рабочие потоки
# threads = [Client(*(x + (finished,))) for x in clients]
# запишем вышеприведенный код более многословно
threads = []
for host, port, numb in clients:
    threads.append(Client(host, port, numb, finished))
# даем потокам поработать 30 секунд
time.sleep(30)
# сигналим о том, что хотим завершить работу
finished.set()
# дожидаемся корректного завершения всех потоков
for thread in threads:
    thread.join()



Отредактировано pyuser (Фев. 5, 2014 01:47:17)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version