Какой самый простой и быстрый способ выполнить операцию по модулю (5 % 2) в коде Cython? Кажется, что использование % сильно замедляет код, так что есть ли лучший способ сделать это?
5 % 2
%
В соответствии с https://github.com/cython/cython/wiki/enhancements-division, используйте директиву компилятора cython.cdivision.Обратите внимание, что для обработки модуля отрицательных чисел будет использоваться другая семантика.
cython.cdivision
Я использую оператор% везде, и я не думаю, что это замедляет код. На самом деле,% действительно быстро! Вы объявляете свои переменные с помощью cdef? Возможно, вы добавляете слишком много накладных расходов на Python только из-за этого.
Можете ли вы использовать встроенный divmod вместо этого?Эта функция принимает два аргумента и возвращает кортеж их отношения и остатка.
divmod
>>> 10 % 7 3 >>> divmod(10,7) (1, 3) >>> -7 % 3 2 >>> divmod(-7,3) (-3, 2)