Форум сайта python.su
приостановка и прерывание потоков извне…. собственно интересует особенно приостановка, как это реализовать,?
Офлайн
единственное, пока, что пришло в голву, это зациклить кучу раз в ключевых местах потока проверку какойто переменной до ее изменения..
Офлайн
Да. И это правильное решение. Тока надо sleep не забыть сделать.
Офлайн
ну этож очень некрасиво и неудобно.. мне штук 20ть таких цикликов вставлять прийдется..если не больше((
както покрасивее, потоньше ж наверно можно?.. не могли ж такой важный аспект в таком красивом языке не доробтать))
стоп, а запущеный поток, хоть как то не выключая программы и не ожидаю его завершения убить можна,?
я совершенно не знаю ниче о процессном програмированние в питон.. может поток както можно заменить подпроцессом, который в свою очередь можно приостоновить извне,?
Отредактировано (Окт. 3, 2008 00:03:18)
Офлайн
Это тема большая и сложная.
Есть такой недостаток, что в питоне нельзя не запаузить процесс не убить.
По странному стечению обстоятельсв, как убить поток - недавно нашли вариант: http://python.su/forum/viewtopic.php?id=2759
Офлайн
Есть модуль реалезации процессов http://pyprocessing.berlios.de/
В большинстве случаев он может помочь (хотя тоже есть некоторые огрехи).
Офлайн
Для запаузивания потоков я так обычно поступаю - вставляю куда-нибудь в место потока, которое переодически пробегается, обьект синхронизации с блокировкой (например threading.Event() )
И снаружи выставляю/снимаю блокировку.
Отредактировано (Окт. 3, 2008 00:18:18)
Офлайн
>>По странному стечению обстоятельсв, как убить поток - недавно нашли вариант: http://python.su/forum/viewtopic.php?id=2759
Попробывал етот тест. Редко когда отрабатывает без “could not determine the thread's id”, это во первых.
А во вторых, если поставить time.sleep(1). Если не raise-нется, то будит ждать полное время и только потом завершиться. А найти какой нибуть “более менее надежный” способ было бы очень позитивно.
Офлайн
DarkAntheyИМХО Это происходит, когда ты сразу посде создания потока пытаешся его убить ( он тогда создастся не успевает).
Попробывал етот тест. Редко когда отрабатывает без “could not determine the thread's id”, это во первых.
Офлайн
DarkAntheyВся фишка в том, что time.sleep() блокирует поток.
А во вторых, если поставить time.sleep(1). Если не raise-нется, то будит ждать полное время и только потом завершиться. А найти какой нибуть “более менее надежный” способ было бы очень позитивно.
Отредактировано (Окт. 22, 2008 03:00:24)
Офлайн