Форум сайта python.su
Описание:
В потоках (threading.Thread) выполняются SQL запросы…в некоторых случаях выполнение запроса достигает 20 мин.
Цель:
Необходимо реализовать возможность отмены выполнения SQL запросов, собственно остановку потока.
Проблемы:
В данный момент убиваю потоки через:
ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(SystemExit))
Понимаю что данные действия есть не совсем корректными, и завершение потоков таким образом часто приводит к segmentation fault приложения.
Как правильно реализовать остановку потока? Подкиньте идей для реализации.
Вроде как для этих целей можно заюзать multiprocessing ?
Отредактировано (Июнь 15, 2009 09:53:02)
Офлайн
уже сделал..тему можно закрывать..
Офлайн
Как?
Офлайн
покажи код :)
Офлайн
goblin_maks, огромное спасибо за наводку на multiprocessing!
(ночь угробил пытаясь убить треды… у меня даже ctypes.pythonapi.PyThreadState_SetAsyncExc(tid, ctypes.py_object(SystemExit)) возвращал ноль, а ему хоть бы хны.)
Офлайн
покажи как сделал…а то эта проблема меня до сих пор тревожит…(подключения к БД Oracle через cx_Oracle)
что я сделал в своем случае.. заставил поток прерваться.. запустив еще один паралельный поток, в котором выполнял:
try:
my_connection.cancel()
except:
pass
Отредактировано (Авг. 28, 2009 09:55:39)
Офлайн