首页 > 解决方案 > 为什么 python 多处理对单核进程的结果略有不同?

问题描述

我正在使用多处理 python 包在 pandas data.frame 对象的单行上运行一个函数。我使用单核(列表理解)和多处理 star.map 运行我的函数。该函数的第一行是 pandas.read_csv,用于导入一个执行多个计算的 data.frame。单核和多核怎么可能给我不同的结果?我在函数的一部分下面发布:

def function(tupleargs):
    import pandas as pd
    import re
    import operator
    from itertools import product
    db=tupleargs[0]
    pos=tupleargs[1]
    mut=tupleargs[2]
    db=pd.read_csv(db,delimiter="\t")
    ...
    return(smtg)

在单核模式下,我运行如下函数:

lst=[function(t) for t in tupleargs]

在多核模式下,我以这种方式运行该函数:

if __name__ == '__main__':
    with multiprocessing.Pool(processes=8) as pool:
        lst=pool.map(function,tupleargs )

任何帮助,将不胜感激

标签: pythonpandasdataframemultiprocess

解决方案


推荐阅读