Форум сайта python.su
0
Всем привет.
Такая проблема есть скрипт (тестовый)
query = '' for i in range(45000): query = query + "insert into securyties(sec_code, fass_code,code, scale, face_value, lot_size,short_name values insert into securyties(sec_code, face_unit insert into securyties(sec_code, face_unit, class_code,code, scale, face_value, lot_size,short_name values insert into securyties(sec_code, face_unit insert into securyties(sec_code, face_unit, class_code,code, scale, face_value, lot_size,short_name values insert into securyties(sec_code, face_unit"
Отредактировано rvkstudent (Апрель 25, 2019 15:38:26)
Офлайн
221
Я не знаю точного и аргументированного ответа.
Могу предположить, что все дело в том как работает менеджер памяти в конкретной ОС. Ведь этот скрипт по сути это 99% работа с выделением памяти. Питон для Windows, Linux и MacOs это на самом деле разные интерпретаторы (с поправкой что все Unix подобные системы гораздо ближе друг к другу, чем Windows и вероятнее всего интерпретатор меньше отличается) и по разному работают с ОС, так как разные системные вызовы.
Возможно в Windows данный код работает менее эффективно.
Офлайн
186
Не один ты такое заметил. Вот тут недавно про похожую ситуацию писали: http://python.su/forum/topic/36769/
Альтернативная ОС хуже оптимизирована чем linux. Обычно это не заметно, но когда у тебя цикл в котором 100500 итераций, то эта не оптимизированность проявляется.
Отредактировано Rodegast (Апрель 26, 2019 11:37:24)
Офлайн
0
Я тоже пришел к такому выводу, что интерпретатор для Win и Linux может чем-то отличаться (например, реализацией операнда “+”) для работы со строками, или еще чем-то. На самом деле в рекомендациях по быстродействию сказано, что нельзя использовать плюс для конкатенации большого количества строк. Просто в дальнейшем все участки кода что-ли проверять на подобные казусы.
P.S. Зато железо новое купил )))
Отредактировано rvkstudent (Апрель 26, 2019 15:19:47)
Офлайн
253
rvkstudentЭто не казус, это плохой код.
Просто в дальнейшем все участки кода что-ли проверять на подобные казусы.
s="insert into ....face_unit" ss=s*45000
Офлайн
13
Также разница может быть в нагруженности системы, у Windows есть такой фетиш - выделять очень много памяти по первому требованию. Один только браузер настолько неэкономно тратит ресурсы - мама не горюй. В linux все обстоит гораздо лучше, а запросы к БД - только трата памяти и много системных вызовов. Разница может быть и в оптимизированности самих интерпретаторов на разных системах.
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн