如何有效地将System.Array写入IronPython中的二进制文件?

时间:2015-02-17 11:04:53

标签: ironpython binaryfiles system.array

我必须将System.Array(类型为Single的1e09项)写入二进制文件。我当然可以使用.GetValue()遍历数组并将每个Single打包成4字节结构,但这非常慢。

在这种情况下是否可以使用标准Python文件i / o?我尝试了somefile_write(some_systemarray),但这会导致错误消息。

我主要对一维数组感兴趣,但是对于nD数组有用的答案将受到高度赞赏。

编辑阅读完第一条评论后,我尝试了以下代码:

    from System import *
    from System.IO import *

    arr = Array.CreateInstance(Single, 1e8)
    b = BinaryWriter(File.Open('test.bin', FileMode.Create))
    for i in arr :
       b.Write(i)
    b.Close()

不幸的是,这需要一点点。 45秒有BinaryWriter.Write(Byte[])可用。但是,只有在可以快速将System.Array转换为Byte[]时,这才能加快速度。

1 个答案:

答案 0 :(得分:0)

您是否尝试过创建Byte数组而不是Single?

数组?
from System import *
from System.IO import *

arr = Array.CreateInstance(Byte, 1e8)
b = BinaryWriter(File.Open('test.bin', FileMode.Create))
b.Write(arr)
b.Close()