Бесстековый Python и PyQt

Какой у вас опыт работы с Stackless Python и PyQt?

Вопросы, которые я был бы рад, если люди обращаются:

  1. Компиляция PyQt для Stackless: нужно ли компилировать PyQt специально для Stackless? компиляция гладкая? проблемы с привязками и т.д.

  2. Стабильность: какие-то неожиданные вылеты, зависания, паузы и прочие странности?

  3. Управление памятью: любые намеки на утечку памяти. сравнение оперативной памяти, необходимой для приложений Stackless/Plain Vanilla PyQt

  4. Расширение возможностей разработки программного обеспечения: очень краткий обзор моделей потока управления для приложений PyQt без стека.

  5. Извлеченные уроки: любые извлеченные болезненные уроки, ловушки, которых следует избегать, проблемы, с которыми вы, возможно, столкнулись

Будь счастлив


person random guy    schedule 17.11.2009    source источник


Ответы (2)


Я пытался пойти по этому пути несколько месяцев назад и решил, что это не стоит усилий.

Мне удалось запустить бинарную установку PyQt (в Windows) против бесстековой версии Python, но я обнаружил, что мне пришлось вручную зайти и изменить некоторые файлы. Я получал сообщение об ошибке (извините, я забыл, что это было), и поиск в Google привел к решению, которое было несколько лет назад. Более новый код не включал старое исправление, поэтому изменение было не слишком сложным и (если я правильно помню) оно было на питоне, поэтому перекомпиляция не понадобилась.

Но это было для меня нарушителем условий сделки. Обновления Qt выходят регулярно, как и обновления PyQt, и я не хотел постоянно исправлять код. Stackless и PyQt просто недостаточно используются вместе, чтобы их можно было тщательно проверить. Я обнаружил, что риск сложно отлаживать проблемы довольно высок. Это особенно верно, учитывая, что автор stackless перешел на PyPy. Позвольте мне заранее извиниться - я хотел бы, чтобы у меня были ссылки, которые я нашел для автора, останавливающего разработку на Python без стека, и более подробная информация об ошибках, которые мне пришлось исправить - я не ожидал, что извергну подробности о переполнении стека.

Поэтому я решил запустить PyQt на ванильном Python, а не без стека.

Кстати, я также подумал, что смешивание сигналов/слотов с бесстековым кодом может привести к путанице, поскольку это совершенно разные методы решения проблем многопоточности.

Удачи!

person Brett Stottlemyer    schedule 12.01.2010

Если вам все это интересно из-за оптимизации скорости:

Вы можете проверить Ласточка без груза ( Википедия здесь ). Google (поскольку YouTube на 100% состоит из Python) работает над компилятором JIT для Python, который увеличит его скорость в 5-10 раз (приблизив его к скорости Java, чем текущая виртуальная машина). Самое приятное то, что он будет работать со всем существующим кодом Python, а это означает, что вам не нужно беспокоиться обо всех проблемах, связанных с другими проектами оптимизации Python.

Я ожидаю, что если вы разрабатываете достаточно большой проект, чтобы оправдать необходимость оптимизации на низком уровне, у вас будет все в порядке с разработкой на обычном Python, а затем изменением текущей виртуальной машины, когда Unladen Swallow выйдет в производство.

person orokusaki    schedule 04.01.2010
comment
Спасибо за ответ. Я хотел бы использовать Stackless Python, потому что его модель управления потоком хорошо подходит для моего проекта. Для этого проекта я уделяю больше внимания оптимизации скорости НИОКР, чем скорости выполнения (предполагаю, что Stackless также ускорит время выполнения). - person random guy; 05.01.2010
comment
Да, я слышал, что немного (5-10% или больше). - person orokusaki; 06.01.2010