Форум сайта python.su
Здраствуйте! у меня такая проблема существует написанное мной приложение на Qt, оно собранно в dll библиотеку. так же есть приложение написанное на Pythone. так вот из питона я вызываю своё приложение как функцию через создание отдельной нити. моё приложение запускается но вот главная проблема, что она не даёт жизни питоновской программе. может кто сталкивался с такой проблемой или хотя бы может что нибудь посоветовать?
Да и самое интересное, что поставил в коде, после создания нити для моего приложения, вывод текста и питон его вывел, а вот обрабатывать главное приложение ни хочет.
Офлайн
После точки обычно следует заглавный регистр.
Диагноз не ясен, по звездам гадать нелегко.
И, тем не менее, складывается впечатление что вы при “вызове своего приложения как функции” не потрудились отпустить GIL.
Офлайн
На счет звёзд вы конечно несомненно правы! Посмотрел в интернете про GIL, но так как на pythone я ни пишу, потому это мне мало, что дало. Поэтому, прошу вас (уверен все так просят) объяснить на пальцах. А под “не потрудились отпустить GIL” вы бы не могли дать конкретные указания, как это сделать. Заранее, спасибо
Офлайн
http://docs.python.org/extending/extending.html#thin-ice
Обратите внимание на
Py_BEGIN_ALLOW_THREADS
Py_END_ALLOW_THREADS
Вызовите свой Qt код внутри этих макросов.
Вы вообще как с Qt работаете? Через Python C API или я неправильно догадался?
Если нужно — могу объяснить подробней. Не ранее чем завтра.
Офлайн
Я пишу таким образом
Thread.start_new_thread (functionname, ())
functionname - это имя функции которую я написал на Qt и собрал в dll библиотеку.
Так вот сегодня я попробывал следующее:
Thread.start_new_thread (functionname, ())
print "1 potok"
Thread.start_new_thread (functionname, ())
print "2 potok"
Thread.start_new_thread (functionname, ())
print "2 potok"
Офлайн
Конечно, QApplication может быть только один. И, конечно, его можно заводить только из главного потока.
Я предполагал, что вы знаете C++ Qt но не владеете Питоном. Оказывается, все куда хуже.
Офлайн
Ну хуже или не хуже это философский вопрос!) Спасибо вам за дискуссию по этому вопросу!
Офлайн