我有两个大型数据集,这些数据集充满了我需要做的事情:
sample1(大约15GB尺寸):
0000002D9D62AEBE1E0E9DB6C4C4C7C16A163D2C
00000142988AFA836117B1B572FAE4713F200567
000001BCBC3B7C8C6E5FC59B686D3568132D218C
000001E4975FA18878DF5C0989024327FBE1F4DF
sample2(大约5GB尺寸):
0000002D9D62AEBE1E0E9DB6C4C4C7C16A163D2C
00000142988AFA836117B1B572FAE4713F200567
000001BCBC3B7C8C6E5FC59B686D3568132D218C
000001E4975FA18878DF5C0989024327FBE1F4DF
我当前正在尝试通过这两个文件在目录中的另一组文件上迭代实现多处理:
:if __name__ == '__main__':
hash_path = glob2.glob(r'pathtohashes*.csv')
sample1 = pd.read_csv(r'pathtosample1hashes.csv', names=['hash'])
sample2 = pd.read_csv(r'pathtosample2hashes.csv', names=['hash'])
for file in hash_path:
jobs = []
p = multiprocessing.Process(compare_function(file, sample1, sample2))
jobs.append(p)
p.start()
该功能将文件与示例文件和输出的文件进行比较。
如何使它更有效?当我可以在内存中维护单个项目并引用它,但不确定如何这样做时,我觉得我在内存中的完整数据集太多了。关于如何提高这一效率的任何提示都会有所帮助。谢谢您的帮助。
您可能需要研究使用标准UNIX工具。如果您想找到常见或丢失的项目,请注意comm
(又称calm
)和join
命令。它们在C中是专门构建的。