【发布时间】:2017-03-06 01:46:33
【问题描述】:
我有两个充满哈希的大型数据集,我需要对其进行处理:
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()
该函数将文件与示例文件进行比较并输出到目录。
如何提高效率?当我可以在内存中维护单个项目并仅引用它但不确定如何执行此操作时,我感觉好像我有太多的进程与内存中的完整数据集。有关如何提高效率的任何提示都会有所帮助。谢谢您的帮助。
【问题讨论】:
标签: python multithreading python-3.x pandas multiprocessing