Python の subprocess
その 2
まあいけるやろと思うけど,昨日のが複数呼ぶ時でも大丈夫かどうか. 足し算やさんと掛け算やさんを呼んでみよう.
call する側の caller.py
#!/usr/bin/python
import subprocess as sub
adder = sub.Popen("./adder.py", stdin=sub.PIPE, stdout=sub.PIPE, )
multiplier = sub.Popen("./multiplier.py", stdin=sub.PIPE, stdout=sub.PIPE, )
a,b = 3,4
adder.stdin.write("%s %s\n"%(a,b))
multiplier.stdin.write("%s %s\n"%(a,b))
added = adder.stdout.readline()
multiplied = multiplier.stdout.readline()
print added, multiplied,
if adder.poll() is None:
adder.terminate()
if multiplier.poll() is None:
multiplier.terminate()
adder.py
#!/usr/bin/python
# adder.py
import sys
while True:
nums = raw_input()
if nums == "quit":
break
else:
a, b = map(float, nums.split())
print a+b
sys.stdout.flush()
これの a+b
を a*b
にした multiplier.py
を用意すればちゃんと走る.
この,readline()
とかそれにまつわる改行コードとかは改善できそうですね.たしかそういう読み方もあったはず(うろ覚え).
しかしどうなんだろう,こういう呼び方でいいんだろうか.