存在一个Perl模块,为我的Python应用程序提供了完美的功能。 我有什么方法可以利用它吗? (这是复杂,我需要一个月才能移植它)
我不想为每次使用产生子进程,因为我需要它几十万次(它是一种特定类型的数据解析器)。
感谢您的建议。
编辑:要求提供模块。这是Mail::DeliveryStatus::BounceParser。它将邮件传递状态通知与可能指示退回邮件的字符串列表进行匹配。 (它通过大量的正则表达式以及其他测试来运行DSN正文/标题。这是一个非常棒的模块。)答案 0 :(得分:5)
我不确定这是否仍然有效,但您可能会感兴趣 PyPerl
仍然应该支持python中的大多数数据解析器。如果您可以指向您正在查看的解析器,那就太好了。
或者,您可以使用该perl模块创建一个完整的进程,并使用IPC,套接字机制来传递来自python和perl进程的数据和结果。
答案 1 :(得分:4)
我知道您可以在Perl中使用Python Inline::Python
,但这不是您的问题。也许Python中有类似的功能。也许像perlmodule?
答案 2 :(得分:2)
我使用HTTP :: Server :: Simple之类的东西来创建本地Web服务。然后你只需对此进行查询。它仍然是一个外部过程,但它只是一个。
答案 3 :(得分:-3)
我不想为每次使用生成子进程,因为我需要它几十万次(它是一种特定类型的数据解析器)。
糟糕的政策。基本的Linux shell一直都在进行这种过程。避免流程产生是一个很大的限制。
但是,你可以轻而易举地做到这一点。
python prepare_data.py | perl my_magic_module.pl | python whatever_else.py
将魔术模块包装在一个简单的perl脚本中,该脚本从stdin读取,执行神奇的操作并写入stdout。
将Python分成两部分:在调用perl之前完成的部分和在调用perl之后完成的部分。
组装一个高性能管道,(a)同时完成所有三个步骤,(b)不分叉很多进程。
BTW将使用您拥有的每个核心。