HOWTO write efficient python/ru

From SHellium Wiki
Jump to: navigation, search
Geographylogo.png In other languages: English | Afrikaans | Albanian | Arabic | Brazilian | Bulgarian | Catalan | Chinese | Croatian | Czech | Danish | Dutch | Esperanto | Estonian | Filipino | Finnish | Flemish | French | German | Greek | Hebrew | Hindi | Hungarian | Indonesian | Italian | Japanese | Latvian | Lithuanian | Macedonian | Malay | Malayalam | Norwegian (Bokmål) | Norwegian (Nynorsk) | Persian | Polish | Portuguese | Romanian | Russian | Serbian | Slovak | Slovenian | Spanish | Swedish | Turkish | Ukrainian | Urdu

Если ваш скрипт на питоне становится тяжелым и медленным, а вы хотели бы, чтобы все работало быстрее? Вот несколько подсказок.

Используем Psyco

Psyco это библиотека для питона, которая компилирует функции с высокой загрузкой, делая время их выполнения гораздо короче. Если Psyco у вас установлен, попробуйте это в скрипте:

 import psyco
 psyco.full()

Всё! Две строки, и ваша программа работает намного быстрее. Также вы можете использовать фунтцию bind() Psyco, чтобы выбрать какие функции ускорять.

Оптимизируем скрипты

У питона есть опция командной строки -O, которая делает обычную оптимизацию. Так же есть опция -OO, которая не дает большого эффекта, но все же дает чуть больший эффект чем -O. Попробуйте следующее:

 python -OO -c "from py_compile import compile; compile('/home/usr/path/to/script.py')"

Например ваш скрипт называется script.py. Когда эта команда выполнится , она создаст файл script.pyo. Вместо того, чтобы запускать "./script.py" или "python script.py", запускайте "./script.pyo". Это выполнит оптимизированую версию вашего скрипта.

Вложеные списки

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

 for item in list:
   someFunction(item)

Используйте:

 [someFunction(item) for item in list]
Personal tools
Namespaces

Variants
Actions
Navigation
Indexes
SHellium Sites
Toolbox