在Linux中如何管道传输numpy数据?
有没有办法把一个Python脚本里的numpy数据传给另一个脚本呢?
假设 script1.py
的内容是这样的:
x = np.zeros(3, dtype={'names':['col1', 'col2'], 'formats':['i4','f4']})
print x
假设我在Linux命令行中运行以下命令:
python script1.py | script2.py
那么 script2.py
能否接收到通过管道传过来的numpy数据作为输入呢(也就是标准输入)?这些数据在 script2.py
中还会保持numpy的格式吗?(这样我就可以在 script2.py
中对它进行numpy操作)?
3 个回答
0
可以查看 这个问题。
如果你愿意使用 subprocess
模块,你可以在进程之间共享内存,这样就能快速传递 numpy 数组。如果不想用这个模块,我发现把数据保存到文件里比用管道传输要好得多,可能是因为把数组转换成字符串的过程太慢了。
3
看看 save
和 load
这两个函数。我觉得它们应该可以接受一个管道,而不是文件。
2
不,数据是以文本的形式通过管道传输的。在写入之前,你需要在 script1.py
中把数据转换成一种可以存储的格式(这叫做序列化),然后在读取之后,在 script2.py
中再把它转换回原来的格式(这叫做反序列化)。