как быть.. использую следующую конструкцию для выполнения тех или инных модулей:
for i in toolName:
if (sys.modules.has_key(i)): module = reload(sys.modules[i]) else: module = __import__(i, globals())
это часть того что должно выполнится в потоке. Если прервать поток и импорт или релоад модуля до конца не выполнится, то при следующем старте потока ни импорт ни релоад не выполняются..как с этим быть и как бороться..
Андрей Светлов
Апрель 1, 2009 20:51:57
не прибивать поток по terminate. Если нужно - выставлять флаг и проверять его из потока. import выставляет import lock, и если в этот момент поток аварийно завершить - lock никогда не будет снят.
goblin_maks
Апрель 1, 2009 21:53:32
спасибо..с утра буду пробовать
cybergrind
Апрель 2, 2009 16:26:01
или залочить код для импорт\релоад и прибивания потока одним локом, меньше возни с проверками
Андрей Светлов
Апрель 2, 2009 17:42:28
прибивание - штука опасная и вредная вообще, а не только для импорта. Я видел много проблем, связанных с аварийным завершением потока. И считаю, что если запущенный поток потом где-то не join - это серьезная ошибка в архитектуре, которая рано или поздно себя проявит.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.