Комментарии 8
Asyncio и конкурентное программирование на Python
Поддерживаю - отличная книга. Автор в предисловии пишет, что книга может быть полезна не только питонистам и это действительно так
Пишите на VBA - он в 4-12 раз быстрее Питона.
Пруфы тут: https://github.com/lkno0705/MatrixMultiplication/pull/32
и тут: https://stackoverflow.com/questions/30045508/python-loop-slower-than-excel-vba
@Burumburum: Отвалилась возможность ввода ссылок (выделил текст, нажал на кнопку вставки ссылок и загрузил ссылку).
Да, для определенных задач можно точечно использовать разные языки, но Python, не создавался с целью стать самым быстрым языком для вычислительных задач, он универсальный, это его достоинство и проклятие. По этому я не призываю использовать только Python, статья создавалась с целью ознакомления с возможностью языка :-)
Извините, если смутил. У Вас сильная первая статья, примите мои поздравления!
На самом деле каждому своё. Кому-то нравится Питон, кто-то повседневную рутину быстрее напишет на C++, а вот я фанат VBA.
У Питона перед Экселем только два преимущества - огромная поддержка огромного сообщества (для VBA придётся долго искать нужный AddOn в сети, так что порой проще написать самому) и Jupyter Notebook (в принципе, Эксель с VBA это тот же самый ноутбук (с 93 года!), но на веб-страничке его не резместишь, Гит не покажет изменения в нём, так что в этом смысле Эксель проигрывает).
Для арифметики и циклов вообще лучше Numpy
(с векторизацией вычислений) или Numba
использовать.
from numba import njit
@njit
def count_numba(count_to: int) -> int:
counter = 0
while counter < count_to:
counter = counter + 1
return counter
Или к примеру, в порядке изврата:
import numpy as np
counter = np.sum(np.ones(count_to))
И то и другое посчитается за доли секунды. Во втором случае - ещё и вместе с созданием массива из единиц.
Хороший пример оптимизации
А там где нужна действительно многопоточка — переписать на какой-то другой язык.
Ускорение Python в 2 раза с помощью multiprocessing, async и MapReduce