5

我有这个函数,我想从一个大文件中读取一个字节。唯一的问题是,在读取一定数量的文件后,PC 上的内存会从稳定的 1.5gb 跃升至 4gb 甚至更高,具体取决于读取的文件数量。(我打破了 80 个文件,因为更高会使我的电脑崩溃)

我想要的只是获取 1 个字节而不是整个文件。请帮忙。

    def mem_test():
        count = 0
        for dirpath, dnames, fnames in scandir.walk(restorePaths[0]):
            for f in fnames:
                if 'DIR.EDB' in f or 'PRIV.EDB' in f:
                    f = open(os.path.join(dirpath, f), 'rb')
                    f.read(1) #Problem line!
                    f.close()
                    if count > 80:
                        print 'EXIT'
                        sys.exit(1)                    
                    count += 1
mem_test()
4

1 回答 1

-1

为了解决内存问题,我认为您需要使用生成器:

def mem_test():
    for dirpath, dnames, fnames in scandir.walk(restorePaths[0]):
        for f in fnames:
            if 'DIR.EDB' in f or 'PRIV.EDB' in f:
                with open(os.path.join(dirpath, f), 'rb') as f:
                    yield f.read(1) #Problem line!

results = [x for x in mem_test()]
于 2013-07-11T02:00:16.147 回答