Но при этом в большинстве сценариев его использования нет каких-либо «сверхестественных» требований к производительности кода, который пишет разработчик системы. Например, для веб-серверов есть множество накладных расходов, обусловленных выбранным фреймворком, работой с базой данных, удаленностью от пользователя и т.д. В итоге даже если программист ускорит свой код на порядки, этого практически никто не заметит.
Однако есть и сценарии, где код все-таки должен работать быстро, и желательно так быстро, насколько это возможно. И именно от этого быстродействия напрямую зависит надежность системы и качество сервиса для конечного пользователя. Подобные требования возникают для систем, где требуется обрабатывать поточные данные, не допускать переполнения входной очереди и выдавать результаты вычисления в реалтайме.
Я поделюсь с вами специфическими приемами программирования на Python, направленными на увеличение эффективности кода, которые я с любовью собирал и пробовал на своих проектах. А также пройдусь по «узким местам» — ключевым участкам кода, где интерпретатор проводит большую часть времени (с наибольшей вероятностью по причине того, что эти участки написаны плохо) и расскажу, как их оптимизировать.
Способы будут как простые, доступные на любом уровне владения Python, так и весьма специфичные, такие как альтернативные интерпретаторы (использование PyPy вместо стандартного CPython), jit-компиляторы и переписывание наиболее критичных участков кода на cython (для тех, кто хочет написать очень быстро, но не владеет Си в достаточной степени).
Видеоприглашение
Презентация доклада:
Запись выступления: