有效的多处理/多线程与大文件



我有两个大型数据集,这些数据集充满了我需要做的事情:

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中是专门构建的。

相关内容

  • 没有找到相关文章

最新更新