我对Python和编程都很陌生,但我想用Python在一个包含大约700万行的制表符分隔的txt文件上运行“滑动窗口”计算。所谓的“滑动窗口”是指它将在大约50000行上运行计算,报告数字,然后向上移动大约10000行,并在另外的50000行上执行相同的计算。如果我在我的数据子集上测试它,我的计算和“滑动窗口”都能正常工作并且运行良好。然而,如果我尝试在整个数据集上运行程序,速度非常慢(现在已经运行了大约40个小时)。这个数学问题非常简单,所以我不认为应该花费这么长时间。
我目前使用csv.DictReader模块读取我的.txt文件。我的代码如下:
我认为这是一次性将所有700万行制作成字典,这可能是较大文件减速的原因。
由于我只对一次运行“块”或“窗口”的数据感兴趣,是否有更有效的方法一次只读取指定行,执行计算,然后重复使用新的指定“块”或“窗口”中的指定行?
我目前使用csv.DictReader模块读取我的.txt文件。我的代码如下:
file1='/Users/Shared/SmallSetbee.txt'
newfile=open(file1, 'rb')
reader=csv.DictReader((line.replace('\0','') for line in newfile), delimiter="\t")
我认为这是一次性将所有700万行制作成字典,这可能是较大文件减速的原因。
由于我只对一次运行“块”或“窗口”的数据感兴趣,是否有更有效的方法一次只读取指定行,执行计算,然后重复使用新的指定“块”或“窗口”中的指定行?
sliding_window(iterable, size, step, fillvalue)
。 - jfs