Python 大文件的高效多处理/多线程处理

Python 大文件的高效多处理/多线程处理,python,multithreading,python-3.x,pandas,multiprocessing,Python,Multithreading,Python 3.x,Pandas,Multiprocessing,我有两个大型数据集,其中包含了我需要处理的哈希: 样本1(大约15gb大小): 样本2(大约5gb大小): 我目前正在尝试实现多处理,将这两个文件迭代到以下目录中的另一组文件: if __name__ == '__main__': hash_path = glob2.glob(r'pathtohashes*.csv') sample1 = pd.read_csv(r'pathtosample1hashes.csv', names=['hash']) sample2 = p

我有两个大型数据集,其中包含了我需要处理的哈希:

样本1(大约15gb大小):

样本2(大约5gb大小):

我目前正在尝试实现多处理,将这两个文件迭代到以下目录中的另一组文件:

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语言专门构建的。我的函数中的比较因子做得很好,我需要能够向外扩展,在我的散列路径中扩展到5000个文件。您是CPU绑定还是IO绑定?考虑到一些文件,我假设磁盘IO将是瓶颈。我假设CPU绑定。我需要调用这个函数多达5000次(5000个较小的单独文件),我在一个32gb内存的四核主机上。我可能试图用错误的方式来处理这件事。这个函数不仅仅是比较,它还有很多其他的项。此功能也通过windows主机完成。根据我的理解,我只需要能够引用内存中的两个大文件。
    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()