Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中提高磁盘读取速度_Python - Fatal编程技术网

如何在Python中提高磁盘读取速度

如何在Python中提高磁盘读取速度,python,Python,我使用Python进行图像分析。代码中的第一步是将映像从磁盘加载到一个20GB uint8大阵列。这一步需要很长的时间,加载速度约为10MB/s,任务期间cpu处于空闲状态 这似乎非常缓慢。我是不是犯了一个明显的错误?如何提高性能?numpy数组类型有问题吗? #查找工作文件夹中的所有图像文件 FileNames=[]#FileNames是图像名称的列表 workingFolder='C:/folder' 对于os.walk(工作文件夹)中的(目录路径、目录名、文件名): 扩展(文件名) Fi

我使用Python进行图像分析。代码中的第一步是将映像从磁盘加载到一个20GB uint8大阵列。这一步需要很长的时间,加载速度约为10MB/s,任务期间cpu处于空闲状态

这似乎非常缓慢。我是不是犯了一个明显的错误?如何提高性能?numpy数组类型有问题吗?

#查找工作文件夹中的所有图像文件
FileNames=[]#FileNames是图像名称的列表
workingFolder='C:/folder'
对于os.walk(工作文件夹)中的(目录路径、目录名、文件名):
扩展(文件名)
FileNames.sort()#按图像编号排序
imNumber=len(文件名)#图像数
#所有图像初始化
img=Image.open(workingFolder+'/'+文件名[0])
AllImages=np.zero((img.size[0],img.size[1],imNumber),dtype=np.uint8)
对于范围内的ii(imNumber):
img=Image.open(工作文件夹+'/'+文件名[ii])
所有图像[:,:,ii]=img

非常感谢您的帮助。

由于CPU处于空闲状态,听起来是磁盘成了瓶颈。10 Mb/s的速度有点慢,但并没有让我想起石器时代的硬盘那么慢。如果是
numpy
,我希望CPU忙于运行
numpy
code,而不是空闲

请注意,CPU等待磁盘的方式可能有两种。首先,您当然需要从磁盘读取数据,但由于数据是20GB,因此数据可能足够大,需要将其交换到磁盘。这种情况的正常解决方案是内存映射文件(这将避免将数据从磁盘移动到交换)


尝试检查您是否可以通过其他方式更快地读取文件。例如,在linux上,如果=/path/to/image of=/tmp/output bs=8k count=10k,则可以使用
dd;rm-f/tmp/output
检查ram的读取速度。有关检查磁盘性能的更多信息,请参阅。

这可能是因为您的硬盘速度较慢。你有没有通过其他方式测试过它的速度?如果硬盘的读/写速度是瓶颈,你的cpu就会闲置。当传输文件时,传输速度总是在150MB/s以上,我相信这是因为计算机中较慢的硬盘速度造成的。SSD非常快,读取速度至少为200MB/s,对于较小的数据集也存在问题,尽管显然没有限制。这不是一个交换问题,因为仍然有大约10GB的可用Ram,并且任务管理器在这个过程中没有显示对磁盘的写入。谢谢你的帮助。