小编Moh*_*rek的帖子

如何用Python实现最高写入速度?

我正在编写一个可以进行高速数据采集的程序.采集卡可以以6.8 GB/s的速度运行(它在PCIe3 x8上).现在我正在尝试流式传输到RAM磁盘,以查看我可以使用Python实现的最大写入速度.

该卡将给我5-10 MB的块,然后我可以在某处写.

我写了这段代码,它将一个10MB的块写入一个二进制文件500次.我在Windows 7 64位上使用Anaconda2,我使用了Anaconda加速的探测器.

block = 'A'*10*1024*1024
filename = "R:\\test"
f = os.open(filename, os.O_CREAT| os.O_BINARY|os.O_TRUNC|os.O_WRONLY|os.O_SEQUENTIAL)

p = profiler.Profile(signatures=False)
p.enable()
start = time.clock()
for x in range(500):
    os.write(f,block)
transferTime_sec = time.clock() - start
p.disable()
p.print_stats()

print('\nwrote %f MB' % (os.stat(filename).st_size/(1024*1024)))
Run Code Online (Sandbox Code Playgroud)

我在RAM磁盘(R:\)上测试了这个,我得到了以下输出:

在此输入图像描述

所以我想,我在RAM上获得了大约2.5 GB/s的速度.这还不错,但仍远离最大RAM吞吐量,但数字是一致的.因此,低吞吐量是一个问题.

第二个问题是,当我使用PCIe SSD测试此代码时(我使用1090 MB/s顺序写入的另一个软件进行基准测试),它给出了可比较的数字.

在此输入图像描述

这让我觉得它是缓存和/或缓冲(?)所以我只是不测量实际的IO.我不确定究竟发生了什么,因为我对python很新.

所以我的主要问题是如何实现最大写入速度,而另一个问题是为什么我得到这些数字?

python performance profiling file

5
推荐指数
1
解决办法
884
查看次数

标签 统计

file ×1

performance ×1

profiling ×1

python ×1