2012-04-08 7 views
0

これは私の以前の投稿と続きます。ラケットプログラムとPythonプログラム間の通信 - 2

communcation between racket program and python program

私は書いて、継続的に読んでいるループでこれを維持しようとすれば、それは再び機能していません。

マイラケットコード:

#lang racket 

(define-values (sp i o e) 
    (subprocess #f #f #f "C:/Python26/python.exe" "C:/Python26/hello.py")) 

(define counter 40) 

(let loop() 
    (display "play\n" o)  
    (flush-output o)  
    (display (read-line i)) 
    (when (> counter 0) (loop))) 

私のpythonコード:hello.py

while 1: 
    input_var = raw_input() 
    print "you entered\n" 
+1

あなたのコードをより読みやすくするためにインデントすることをお勧めします(そして、Pythonの場合はコンパイル可能です)。 –

+0

'sys.stdin.read()'を試してください。 – Blender

+0

sys.stdin.readline()を使用しましたが、それは役に立ちませんでした。それでも私のプログラムはハングアップします。 – chom

答えて

2

物事のPythonの側のコードがフラッシュすることはできません:それはあなたのことを考えられますもう一度バッファリングの問題に直面しています。 -uフラグを付けてPythonを実行して、バッファされていない出力ストリームをPython側で強制的に実行してみてください。

How to flush output of Python print?Disable output bufferingへの回答も関連している可能性があります。

+0

これは私を助けました。 import sys 'これはすぐに出力されます。' sys.stdout.flush() – chom

関連する問題