Запись данных так многократно в базе данных SQLite с Python - PullRequest
4 голосов
/ 30 декабря 2011

Я хочу использовать SQLite для своего приложения Python с графическим интерфейсом, но мне приходится обновлять базу данных каждые 500 мс, не влияя на производительность моей программы.

Я использую PyQt4, поэтому я подумал об использовании QThread, но онКажется, с этим трудно справиться, поэтому я подумал, был ли это лучший способ, прежде чем пытаться понять это.

Мой вопрос: QThread - лучший или есть другие способы?

1 Ответ

1 голос
/ 02 января 2012

В соответствии с тем, что реализация Python полагается на GIL , даже с использованием потоков или таймера вы не сможете сделать что-то (потенциально дорогостоящее) в вашей программе, не влияя на глобальную производительность программа.

Я предлагаю вам взглянуть на многопроцессорный модуль , чтобы обойти это ограничение. Используя этот модуль, вы больше не будете использовать потоки (на которые влияет GIL), а процессы (на которые не влияет GIL).

Возможно, вы могли бы создать подпроцесс, который будет включать таймер для обновления каждые 500 мс, когда основной процесс продолжит свою работу.

Затем вы позволите системе выполнять работу по балансировке программ, и это может быть лучше с точки зрения отзывчивости (особенно в многоядерной среде)

...