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