Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过管道改进IPC?_Python_Ipc_Subprocess_Pipe - Fatal编程技术网

Python 如何通过管道改进IPC?

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

帮助改进此代码-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 = 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()…似乎最好发送您将要发送的内容的大小,然后在另一端准确读取该数量。