我在这个网站上发现了一个问题,它向我展示了如何从Python调用Perl脚本。我目前使用下面的代码行来实现这一目标:从Python调用Perl脚本不断返回值
pipe = subprocess.Popen(["perl", "./Perl_Script.pl", param], stdout=subprocess.PIPE)
result = pipe.stdout.read()
此作品完美,但唯一的问题是,Perl脚本需要几分钟的时间来运行。在Perl脚本的结尾处,我使用一条简单的print语句来打印我需要返回的Python值,Python将其设置为Python中的结果结果。
有没有办法让我的Perl脚本每隔几秒就可以包含更多的打印语句,可以连续返回到Python(而不是等待几分钟,并在最后返回一个长列表)?
最终,我在做的是使用Perl脚本来获取数据点,然后我发回到Python来绘制眼图。当Perl脚本完成运行时,我不想等待几分钟来绘制眼图,而是希望将数据段连续返回给Python,以便每隔几秒更新一次。
您是否尝试过在perl脚本的中间阶段进行简单打印?我不明白问题是什么。 –
是的,但python变量_result_不会更新,直到perl脚本完成运行。是的,我可以在perl脚本中放置更多的打印语句,并且这些语句会返回 - 但是当perl脚本完成时,它们会一起返回。 – dmranck
下面有一个关于在推送到管道时关闭缓冲的答案,另一个关于确保你没有缓冲管道输入的答案。你需要做这两件事。 –