Найти - Пользователи
Полная версия: Как закрыть поток?
Начало » Python для экспертов » Как закрыть поток?
1
root1
 class Thread(threading.Thread):
def run():
    while True:
          ........
class Main():
def foo(self):
    self.thread.start()

Как закрыть поток? self.daemon не подходит т.к поток не закрывает а только передает упровление, и всеравно не работает.
Python 3.*
scidam
Встречал я когда-то на эту тему рассуждения, вот нашел.
root1
     def __init__(self):
        super(StoppableThread, self).__init__()
        self._stop_event = threading.Event()
    def stop(self):
        self._stop_event.set()

Этот вариант у меня не работает.
It is generally a bad pattern to kill a thread abruptly, in Python and in any language. Think of the following cases:

the thread is holding a critical resource that must be closed properly
the thread has created several other threads that must be killed as well.

Мне в общем не надо нарушать правила, главное чтобы закрыть в котором вечный цикл. Сигнал есть возможность послать как с внешнего потока так и из нутри цикла. Только не один из нагугленых у меня не сработал. Когда пробывал закрывать поток с внешней стороны, получал сообщение о разнице потоков.
JOHN_16
А чем не устраивает старый добрый способ с флагом в условии цикла?
root1
JOHN_16
А чем не устраивает старый добрый способ с флагом в условии цикла?
 if flag == True:
    return 0

Вот так получается не совсем правильно. Поток изменяется но выполнение после функции start() дальше не происходит. Как проверить закрыт ли поток?
PooH
Вот тут Signaling Between Threads исчерпывающе. Лучше прочитать страницу целиком, это все что нужно знать о потоках.
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