Столкнулся сегодня с проблемой. У нас есть программа на PyGTK работающая под Windows. Она просто морда к БД и файловому архиву. Задача стоит достаточно тривиально - грузить файлы в фоне (они могут быть по много-много мегабайт). Делается так-же "тривиально" - поток на основе threading.Thread. Но обнаружилась засада - в фоне ничего не качало. Только при выполнении join() делалась нуждная работа.
В результате я пытался делать сложную магию и копал гугл. В итоге обнаружилось, что проблема в gtk. Оно как-то хитрым образом работает с потоками, потому все вызовы gtk надо оборачивать в gtk.threads_enter() и в gtk.threads_leave(). А в начале вызывать gtk.gdk.threads_init().
Теперь код должен выглядеть примерно так:
gtk.gdk.threads_init()
create_window()
gtk.gdk.threads_enter()
gtk.main()
gtk.gdk.threads_leave()
Вот такая вот ерунда.
2 комментария:
Спасибо!!!
я в гугле провел меньше времени благодаря данному посту ;)
эть… возникла проблема с завершением приложения - нашел ответ тут
Отправить комментарий