【问题标题】:Pipe numpy data in Linux?在Linux中管道numpy数据?
【发布时间】:2011-03-11 02:39:24
【问题描述】:

是否可以将 numpy 数据(从一个 python 脚本)传送到另一个?

假设script1.py 看起来像这样:

x = np.zeros(3, dtype={'names':['col1', 'col2'], 'formats':['i4','f4']})

print x

假设从 linux 命令中,我运行以下命令:

python script1.py | script2.py

script2.py 是否将通过管道传输的 numpy 数据作为输入(stdin)?数据是否仍会采用与 numpy 相同的格式? (例如,我可以在script2.py 中对其执行numpy 操作)?

【问题讨论】:

    标签: python linux ubuntu numpy pipe


    【解决方案1】:

    查看saveload 函数。我认为他们不会反对通过管道而不是文件。

    【讨论】:

      【解决方案2】:

      不,数据作为文本通过管道传递。写入前需要序列化script1.py中的数据,读取后反序列化script2.py中的数据。

      【讨论】:

      • 一种快速而简单的序列化方法是使用 python repr 函数。将 script1.py 中的 print x 替换为 print repr(x),然后让 script2.py 调用 eval 以反序列化 script1.py 的输出
      • 谢谢你们。我有一个需要写入二进制文件的 numpy 数组,我只是认为管道会使整个过程更快(即一个进程计算,一个进程写入)。您还有其他想法可以加快这项工作吗?
      • mmap 让世界运转起来。
      【解决方案3】:

      this question

      如果您愿意使用subprocess 模块,您可以在进程之间共享内存以快速传递numpy 数组。如果没有,我发现保存到文件比管道更方便,可能是因为将数组转换为字符串太慢了。

      【讨论】:

        猜你喜欢
        • 2019-08-23
        • 2011-02-12
        • 2018-07-31
        • 2014-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-08
        相关资源
        最近更新 更多