Сейчас у меня есть алгоритм обработки изображений на Python, состоящий примерно из 100 строк. При использовании numpy, PIL и scipy это занимает около 500 мс. Я хочу сделать это быстрее, и, поскольку фактический алгоритм на данный момент кажется довольно оптимизированным, мне интересно, улучшит ли время использование другого подхода, такого как Cython. Я считаю, что могу сделать несколько разных вещей:
Использовать Cython, чтобы раскрыть соответствующие части C. библиотеку на Python.
Используйте Ctypes, чтобы просто писать все на C, но при этом иметь чистый Python (совсем не склоняясь к этому)
Создайте модуль расширения на C/C++, импортируйте его и вызовите функции. Однако я не уверен, смогу ли я использовать numpy таким образом.
Создайте DLL и загрузите ее Python. Это не позволяет использовать numpy или эти модули, но все равно будет очень эффективно.
Я просто Здесь нужна скорость, не беспокоясь о сложности реализации. Есть ли какой-то один вариант лучше в данном случае, все ли они одинаковые или вообще стоит делать?
Сейчас у меня есть алгоритм обработки изображений на Python, состоящий примерно из 100 строк. При использовании numpy, PIL и scipy это занимает около 500 мс. Я хочу сделать это быстрее, и, поскольку фактический алгоритм на данный момент кажется довольно оптимизированным, мне интересно, улучшит ли время использование другого подхода, такого как Cython. Я считаю, что могу сделать несколько разных вещей:
[list] [*][b]Использовать Cython[/b], чтобы раскрыть соответствующие части C. библиотеку на Python. [*][b]Используйте Ctypes[/b], чтобы просто писать все на C, но при этом иметь чистый Python (совсем не склоняясь к этому) [*][b]Создайте модуль расширения[/b] на C/C++, импортируйте его и вызовите функции. Однако я не уверен, смогу ли я использовать numpy таким образом. [*][b]Создайте DLL[/b] и загрузите ее Python. Это не позволяет использовать numpy или эти модули, но все равно будет очень эффективно. [/list]
Я просто Здесь нужна скорость, не беспокоясь о сложности реализации. Есть ли какой-то один вариант лучше в данном случае, все ли они одинаковые или вообще стоит делать?