メインの Python プログラムで subprocess を使用して Python スクリプトを開きたいと考えています。これら 2 つのプログラムが両方とも実行されているので、これら 2 つのプログラムが互いにチャットできるようにして、スレーブ スクリプトのアクティビティを監視できるようにします。つまり、相互に文字列を送信する必要があります。
メイン プログラムには、スレーブ スクリプトと通信して監視する次のような関数があります。
スクリプト 1
import subprocess
import pickle
import sys
import time
import os
def communicate(clock_speed, channel_number, frequency):
p = subprocess.Popen(['C:\\Python27\\pythonw','test.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
data = pickle.dumps([clock_speed, channel_number, frequency]).replace("\n", "\\()")
print data
p.stdin.write("Start\n")
print p.stdout.read()
p.stdin.write(data + "\n")
p.poll()
print p.stdout.readline()
print "return:" + p.stdout.readline()
#p.kill()
if __name__ == '__main__':
print "GO"
communicate(clock_speed = 400, channel_number = 0, frequency = 5*1e6)
test.py スクリプトは次のようになります。
スクリプト 2
import ctypes
import pickle
import time
import sys
start = raw_input("")
sys.stdout.write("Ready For Data")
data = raw_input("")
data = pickle.loads(data.replace("\\()", "\n"))
sys.stdout.write(str(data))
###BUNCH OF OTHER STUFF###
これらのスクリプトで実行したいことは次のとおりです。
- Popen を使用してスクリプト 2 を開くスクリプト 1
- スクリプト 1 は文字列「Start\n」を送信します
- スクリプト 2 はこの文字列を読み取り、文字列 "Ready For Data" を送信します。
- スクリプト 1 はこの文字列を読み取り、ピクルス化されたデータをスクリプト 2 に送信します。
- じゃあなんでも…
主な問題は、パート 2 ~ 4 をどのように行うかです。その後、2 つのスクリプト間の残りの通信が続きます。今のところ、スクリプト 2 が終了した後、スクリプト 2 から文字列を読み取ることしかできませんでした。
どんな助けでも大歓迎です。
アップデート:
スクリプト 1 は 32 ビット Python を使用して実行する必要があり、スクリプト 2 は 64 ビット Python を使用して実行する必要があります。