Найти - Пользователи
Полная версия: приостановка и прерывание потоков извне
Начало » Python для экспертов » приостановка и прерывание потоков извне
1 2
124bit
приостановка и прерывание потоков извне…. собственно интересует особенно приостановка, как это реализовать,?
124bit
единственное, пока, что пришло в голву, это зациклить кучу раз в ключевых местах потока проверку какойто переменной до ее изменения..
shiza
Да. И это правильное решение. Тока надо sleep не забыть сделать.
124bit
ну этож очень некрасиво и неудобно.. мне штук 20ть таких цикликов вставлять прийдется..если не больше((
както покрасивее, потоньше ж наверно можно?.. не могли ж такой важный аспект в таком красивом языке не доробтать))
стоп, а запущеный поток, хоть как то не выключая программы и не ожидаю его завершения убить можна,?

я совершенно не знаю ниче о процессном програмированние в питон.. может поток както можно заменить подпроцессом, который в свою очередь можно приостоновить извне,?
shiza
Это тема большая и сложная.
Есть такой недостаток, что в питоне нельзя не запаузить процесс не убить.
По странному стечению обстоятельсв, как убить поток - недавно нашли вариант: http://python.su/forum/viewtopic.php?id=2759
shiza
Есть модуль реалезации процессов http://pyprocessing.berlios.de/
В большинстве случаев он может помочь (хотя тоже есть некоторые огрехи).
shiza
Для запаузивания потоков я так обычно поступаю - вставляю куда-нибудь в место потока, которое переодически пробегается, обьект синхронизации с блокировкой (например threading.Event() )
И снаружи выставляю/снимаю блокировку.
DarkAnthey
>>По странному стечению обстоятельсв, как убить поток - недавно нашли вариант: http://python.su/forum/viewtopic.php?id=2759
Попробывал етот тест. Редко когда отрабатывает без “could not determine the thread's id”, это во первых.
А во вторых, если поставить time.sleep(1). Если не raise-нется, то будит ждать полное время и только потом завершиться. А найти какой нибуть “более менее надежный” способ было бы очень позитивно.
shiza
DarkAnthey
Попробывал етот тест. Редко когда отрабатывает без “could not determine the thread's id”, это во первых.
ИМХО Это происходит, когда ты сразу посде создания потока пытаешся его убить ( он тогда создастся не успевает).
shiza
DarkAnthey
А во вторых, если поставить time.sleep(1). Если не raise-нется, то будит ждать полное время и только потом завершиться. А найти какой нибуть “более менее надежный” способ было бы очень позитивно.
Вся фишка в том, что time.sleep() блокирует поток.
Попробуй делать sleep помельче и несколько раз =)
типа
for i in xrange(100): time.sleep(0.01)
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