Python 如何通过管道改进IPC?
帮助改进此代码-IPC通过管道。我认为使用函数replace(“\n”,“\()”是不安全的,因为字符串pickle.dumps(data)可能包含符号“\()”。有什么合理的方法吗 主要模块:Python 如何通过管道改进IPC?,python,ipc,subprocess,pipe,Python,Ipc,Subprocess,Pipe,帮助改进此代码-IPC通过管道。我认为使用函数replace(“\n”,“\()”是不安全的,因为字符串pickle.dumps(data)可能包含符号“\()”。有什么合理的方法吗 主要模块: import subprocess, pickle data=["A","B","C"] data = pickle.dumps(data).replace("\n", "\\()") p=subprocess.Popen(["python", "server.py"],stdin = subproce
import subprocess, pickle
data=["A","B","C"]
data = pickle.dumps(data).replace("\n", "\\()")
p=subprocess.Popen(["python", "server.py"],stdin = subprocess.PIPE, stdout= subprocess.PIPE, stderr= subprocess.PIPE)
stdout, stderr = p.communicate(input=data)
print stdout
server.py:
import pickle,sys
s=sys.stdin.readline()
data = pickle.loads(s.replace("\\()", "\n"))
sys.stdout.write(str(data))
为什么要尝试替换换行符?字符串s包含换行符符号。我们使用函数readline()…似乎最好发送您将要发送的内容的大小,然后在另一端准确读取该数量。