因此,假设我有两个脚本:一个是xml-sax读取器,另一个应该处理解析过程的结果。
我的解析器“操场”模型如下:
import json
def generator():
n=0
while n < 100:
data_package = {n:"test", 101:"some more info"}
temp = json.dumps(data_package)
print(temp)
n = n + 1
generator()
它模拟解析器生成的字典,将它们打包到一个json转储字符串中,以发送到其父函数。
此父函数将xml阅读器作为子进程生成,应采用dict并进一步处理信息。操场上的例子:
import subprocess
child = subprocess.Popen(args=["python3", "playground-parser.py"], stdout=subprocess.PIPE,
stdin=subprocess.PIPE, stderr=subprocess.STDOUT)
我现在所缺少的是,解析器告诉父级“嘿,我已经完成另一个data_package
,我在等待您的处理,”是一种方式,父级会收到此消息,进行处理并丢弃data_package
并向孩子发送一条消息,告诉孩子可以继续发送另一条data_package
。
通过阅读关于stackoverflow的其他子流程问题,我得出的结论是:
Popen.communicate()
向孩子发送文字吗?我无法确定它实际传达的内容,因为它也被用来从父级(outs, errors = child.communicate()
)访问所收集的输出和子级的错误Popen.send_signal()
,文档只说“将信号发送给孩子”。并继续讨论发送退出或终止信号。我无法拼凑如何从孩子与父母进行交流,并让它在接收来自孩子的信息时真正地监听并执行。
在此感谢您在正确方向上的帮助或指点!