我想在我的主 python 程序中使用子进程打开一个 Python 脚本。我希望这两个程序能够在它们都在运行时相互聊天,这样我就可以监视从脚本中的活动,即我需要它们在彼此之间发送字符串。
主程序将具有与此类似的功能,它将与从属脚本进行通信和监视:
脚本 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###
我希望这些脚本执行以下操作:
- 脚本 1 使用 Popen 打开脚本 2
- 脚本 1 发送字符串“Start\n”
- 脚本 2 读取此字符串并发送字符串“Ready For Data”
- 脚本 1 读取此字符串并将腌制数据发送到脚本 2
- 然后随便...
主要问题是如何执行第 2-4 部分。然后应该遵循两个脚本之间的其余通信。到目前为止,我只能在脚本 2 终止后读取字符串。
任何帮助是极大的赞赏。
更新:
脚本 1 必须使用 32 位 Python 运行,而脚本 2 必须使用 64 位 Python 运行。