在Linux中如何管道传输numpy数据?

1 投票
3 回答
769 浏览
提问于 2025-04-16 13:29

有没有办法把一个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

看看 saveload 这两个函数。我觉得它们应该可以接受一个管道,而不是文件。

2

不,数据是以文本的形式通过管道传输的。在写入之前,你需要在 script1.py 中把数据转换成一种可以存储的格式(这叫做序列化),然后在读取之后,在 script2.py 中再把它转换回原来的格式(这叫做反序列化)。

撰写回答