Как стать автором
Обновить

Комментарии 11

Для чего #define PY_SSIZE_T_CLEAN ?

Макрос PY_SSIZE_T_CLEAN определяется перед импортом Python.h для правильного типа размера данных. Если определен макрос PY_SSIZE_T_CLEAN то тип размера данных будет Py_ssize_t, иначе int. Это особенно важно на 64 битных системах, где размер данных может превышать 2**31. Подробнее об этом Parsing arguments and building values первое примечание.

Крутая статья. А можно До / После для наглядности?

Полный исходный код примера До / После Подробнее об этом во 2 части статьи.

А wasm модули собирать не пробовали? Или на расте либу написать?

Написать расширение для Python на ассемблере ? Да, пожалуй это можно, но потребуется выполнить требования Python API, а так почему бы нет ?

Про Rust к сожалению, ничего не могу сказать, я сам с ним знаком на уровне Hello world.

Не совсем. Написать библиотеку на том же Си без ограничений на Python - ни тебе с GC возиться, ни типы не прокидывать. Библиотека компилируется в wasm-модуль и из питона подключается что-то типа

from wasm import vm # название вымышлено, реальная либа звалась иначе
lib = vm.loadlib('hasher')
lib.sha256(input())

Теоретически скорость должна быть на уровне нативного кода, за исключением накладных расходов на передачу данных между wasm и python.

Пожалуй, надо признаться, что про wasm я знаю еще меньше, чем про Rust.

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

Рисёчеры в МТС работают над перебором ключей к биткойн-кошелькам? ))

Рисёчеры в МТС работают над перебором ключей к биткойн-кошелькам? ))

К сожалению, нет. Я старался выбрать пример, требующих интенсивных вычислений, который будет понятен широкой аудитории.

Есть же Cython, чего не юзаете?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий