我使用subprocess
從腳本中產生一個進程。我的subprocess
需要JSON輸入並執行一些操作,並應將一些實時數據返回到主進程。我如何從subprocess
做到這一點? 我正在嘗試這樣的事情。但它正在拋出一個錯誤。從python中的子進程接收返回數據
以下是5月主要工序 「main.py」
p = subprocess.Popen(['python','handler.py'],
stdin=subprocess.PIPE,stdout=subprocess.PIPE)
p.communicate(JSONEncoder().encode(data))
while True:
out = process.stdout.read(1)
if out == '' and process.poll() != None:
break
if out != '':
sys.stdout.write(out)
sys.stdout.flush()
下面是我subprocess
「handler.py」
if __name__ == '__main__' :
command = json.load(sys.stdin)
os.environ["PYTHONPATH"] = "../../"
if command["cmd"] == "archive" :
print "command recieved:",command["cmd"]
file_ids, count = archive(command["files"])
sys.stdout.write(JSONEncoder().encode(file_ids))
但它拋出一個錯誤。
Traceback (most recent call last):
File "./core/main.py", line 46, in <module>
out = p.stdout.read(1)
ValueError: I/O operation on closed file
我在這裏做錯了什麼?
'process'從哪裏來?你用'subprocessPopen'創建'p'。 –