Здравствуйте, meandr, Вы писали:
M>Если следовать вашей логике то зачем оптимизация нужна вообще, и так все работает
Оптимизация нужна там, где она нужна.
Здравствуйте, meandr, Вы писали:
M>Запускаем все на windows получаем cкомпиленый в байт код Pytest.pyc копируем его и test.py на unix машину (FreeBSD7.1) зупускаем и получаем "hellow posix", значит это место не заоптимизировано
Да, действительно отпимизирует только если в условии используется именно __debug__ а не собственные значения тут я ошибся.
Здравствуйте, meandr, Вы писали:
M>Re[3]: Препроцессор в python M>Eue спасибо идею я понял, чет даж незадумывался об этом что сам компайлер викидывает неиспользуемый код, но как сделать так чтобы питон выкинул часть платформенно зависимого кода по условию ума не приложу.
Видимо остается только вариант вынести платформенно-зависимый код в функции или классы в отдельных модулях и использовать динамический import
Здравствуйте, kochetkov.vladimir, Вы писали:
KV>Видимо остается только вариант вынести платформенно-зависимый код в функции или классы в отдельных модулях и использовать динамический import
Есть еще варианты для особо упорных. В питоне в стандартных модулях практически полностью доступен компилятор в байт код, есть возможность анализировать и менять AST и в общем вполне возможно написать свой компилятор в байт код, выкидывающий все ненужное. Задача не сложная но достаточно муторная.
Ну и для настоящих джедаев, можно написать утилиту преобразующую уже готовый байт код.
Re: Препроцессор в python >>Вообще идея заиметь препроцессор в питоне конечно бредовая. Но если мозг съеден целью "оптимизацией до посинения", то подобные вопросы решаются >>>архитектурно — весь платформо-зависимый код кладется в разные модули и где надо делается их условный импорт.
>>>if os.name == 'posix': >>> import post_rel as rel >>>else: >>> import nt_rel as rel
Угу я вообщем то согласен. Тока не могу понять одного почему платформу на которой выполняеться python нелюзя было сделать тоже встроенной перменной, как __debug__? В этом случае часть кода бы просто была викинута при компиляции и никогда бы не исполнялось ветвление.
Здравствуйте, meandr, Вы писали:
M>Угу я вообщем то согласен. Тока не могу понять одного почему платформу на которой выполняеться python нелюзя было сделать тоже встроенной перменной, как __debug__? В этом случае часть кода бы просто была викинута при компиляции и никогда бы не исполнялось ветвление.
Потому что питон по большей части кросс-платформенный, а потому платформо-зависимые модули или часть кода в них не очень распространенный юз-кейс. Потом при правильной архитектуре, как уже было сказано выше, ифы не проблема.
Re[3]: Препроцессор в python >>Потому что питон по большей части кросс-платформенный, а потому платформо-зависимые модули или часть кода в них не очень распространенный юз-кейс.
Если это все так то почему же в стандартной библиотеке Python море платформо специфичного кода.
Здравствуйте, meandr, Вы писали:
M>Re[3]: Препроцессор в python >>>Потому что питон по большей части кросс-платформенный, а потому платформо-зависимые модули или часть кода в них не очень распространенный юз-кейс.
M>Если это все так то почему же в стандартной библиотеке Python море платформо специфичного кода.
Это плата за то чтобы клиентский код был более высокоуровневым и не зависел от платформы. Это справдливо для всех языков и их стандартных библиотек. Плюс ко всеми в питоне многое из стандартной библиотеки написано не на нем самом а на Си.