LINUX.ORG.RU

Подключить perl модуль к python

 , , ,


0

1

Есть perl модуль (это, если кому интересно заменить его нечем) который может принимать значения и отдавать результат, нужно описать для него «обвязку» которая будет передавать значения из файлов и результат складывать в другие файлы.

Сейчас работает самописная обвязка на perl, но я тут подумал, а вдруг можно было подключить модуль pm к python...самое первое что приходит в голову, это написать небольшой pl который будет вызываться и принимать/отдавать результаты работы модуля и уже дергать в python, но звучит как костыль.

★★★

написать небольшой pl который будет вызываться и принимать/отдавать результаты работы модуля и уже дергать в python, но звучит как костыль.

Тебе в любом случае писать обвязку. Что для сишки, что для перла, что для жавы. Если можно обойтись простым subprocess - его и бери

upcFrost ★★★★★
()

начать стои с java, для нее написать обертку в го, потом в крестах биндинги прописать на C++24, и уже потом, из питухона, соблюдая отступы, использовать subprocess для либы на крестах.
вообщем цели не вижу, только путь.

etwrq ★★★★★
()
Ответ на: комментарий от frob

Примерно 500 строк. struct.unpack вместо unpack

И полкамаза тормозов в комплекте. Бинарщину на питоне разбирать такое себе веселье, проще cython прицепить и дёргать бинарь сишкой

upcFrost ★★★★★
()
Ответ на: комментарий от frob

Ну хз. Я обрабатывал картинки через struct (формат для psp, человечных парсеров тогда не было) - разобрать 480х272 занимало около секунды. На крестах раз так в 10-20 меньше. Хотя это было 10 лет назад, может питон стал бодрее

upcFrost ★★★★★
()
Ответ на: комментарий от frob

Перл, кстати, довольно шустро справляется даже на однопотоке, то там код как-то хитро написан что имя функции формируется исходя из заголовка куска бинарных данных (вместо if/elil/else или switch/case) думаю это влияет на производительность.

Вообще хороший повод попробовать go изучить, но пока времени на переписывание нет, работает и хорошо.

Kolins ★★★
() автор топика
Ответ на: комментарий от Kolins

имя функции формируется исходя из заголовка куска бинарных данных

За такое в продакшене надо бубенцы отрезать без анестезии. Работал с таким кодом, очень жалею что не знаком с его автором.

По теме - что перл что питон для обработки бинарщины подходят очень условно, легко можно налететь на кейс который абсолютно тривиален в сишке но в питоне решается дикими костылями. Если остальная часть на питоне - посмотри лучше на cython а не на go. По крайней мере геморроя с обвязкой не будет (почти)

upcFrost ★★★★★
()

Нет проблемы написать питоновский модуль в который будет встроен интерпретатор перла. Написать нужно будет только конвертацию данных туда-сюда. И всё - дёргай перловый код из питона. Так-то конечно правильнее переписать перловый код на любой ЯП.

slovazap ★★★★★
()
Ответ на: комментарий от Kolins

Так можно на чём угодно написать. В питоне свича не было до недавнего времени, но это никак не мешает дёргать функции из словаря по чему угодно в качестве ключа.

frob ★★★★★
()
Ответ на: комментарий от Kolins

centos 6,7

Ужос! Я 7 считаю давно протухшим, а как можно что-то делать под 6 - не представляю.

Но если чё, сам гоняю приложения на Python 3.11 в Cent OS 7 в докере, никаких проблем (если б ещё не требовалось периодически заходить на эту окаменелость).

emorozov
()
Ответ на: комментарий от emorozov

Ужос! Я 7 считаю давно протухшим, а как можно что-то делать под 6 - не представляю.

Это все легаси, по возможности переношу сервисы на debian 11, но процесс не быстрый.

Kolins ★★★
() автор топика