Найти - Пользователи
Полная версия: Как остановить поток?
Начало » Python для новичков » Как остановить поток?
1
Carzil
Есть класс:
#!/usr/bin/python
import threading
class t(threading.Thread):
def run(self):
for i in xrange(0, 103):
print i
Собственно, вопрос: как остановить выполнение потока на рандомном числе?
Андрей Светлов
Выйти из функции run.
http://asvetlov.blogspot.com/2010/11/1.html - как для вас писал :)
Carzil
Это я уже понял. А как остановить выполнение функции вне функции??
Андрей Светлов
Читать умеете? Снаружи завершить поток нельзя.
Можно извне взводить какой-нибудь флаг, и в потоке его проверять. Других безопасных способов не существует.
Carzil
Задача: как только придёт сообщение от сокета, сразу оборвать raw_input() и вывести вновь пришедшее сообщение. Как это сделать?
to Андрей Светлов: и как такую задачу решить с помощью флагов?
Андрей Светлов
Carzil
Задача: как только придёт сообщение от сокета, сразу оборвать raw_input() и вывести вновь пришедшее сообщение. Как это сделать?
to Андрей Светлов: и как такую задачу решить с помощью флагов?
И где здесь потоки? К слову, raw_input “оборвать” не выйдет. Придется городить что-то другое.
Carzil
У нас есть два потока: один слушает соединение, а другой - пользовательский ввод. А что можно нагородить? :(
Андрей Светлов
У вас нестандартная хотелка.
Для CLI подобное не требуется.
GUI и по настоящему консольные системы вроде curses делают ввод немного иначе.
Работу raw_input нельзя прервать программно.

Может, вам на самом деле нужна не консоль?

Представил себе эту красоту: вколачиваю я текст, а прога внезапно (сообщение, понимаете ли, пришло) мои попытки рубит на корню, печатает это чертово сообщение и предлагает мне ввести всё заново, более расторопно щелкая по кнопкам. А то вдруг еще одно сообщение придёт…
Eliont
Поток - прервать нельзя. Процесс - можно.

В питоне есть модуль processing - попробуй его заюзать.

Хотя можешь порыскать по сети - я находил рецепты-извращения, связаные, например, с пропихиванием исключения внутрь потока, но всё равно с атомарными операциями это не прокатит.
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