我在這個網站上發現了一個問題,它向我展示瞭如何從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
下面有一個關於在推送到管道時關閉緩衝的答案,另一個關於確保你沒有緩衝管道輸入的答案。你需要做這兩件事。 –