MySQLdb Python медленно!используя 'SSCurso'r против PHP' mysql_fetch_assoc ' - PullRequest
1 голос
/ 18 августа 2011

Мне нужно пройти через всю таблицу в Python. Я использую MySQLdb через 'SSCursor', и это намного медленнее, чем в PHP.

PHP 5.3.5

$result = mysql_query("SELECT * FROM anytable");
while($row = mysql_fetch_assoc($result)){
#do stuff

}

python2.7

cursor.execute("SELECT * FROM anytable")
for row in cursor:
    pass

РЕЗУЛЬТАТЫ

PHP: 5 секунд ЦП около 35%, Python: 25 секунд CPU 100%

MySQLdb просто отстой или я что-то не так делаю? Если MySQLdb, что я могу использовать вместо этого для лучшей производительности / той же функциональности?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2011

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

Если это не так, то, похоже, что MySQLdb действительно сосет, и вам следует добавить больше информации, чтобы люди могли найти способ выбрать для вас что-то.

0 голосов
/ 25 ноября 2011

Вы можете использовать SQLAlchemy модуль.Вы можете оптимизировать свои запросы для лучшего использования памяти и процессора.

Ссылка : http://www.sqlalchemy.org/features.html

...