尝试操作池多处理的列表结果时,代码从不终止

2024-06-01 09:33:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一段代码,它使用poolstarmap并行运行各种统计操作。如果我尝试操作从这个多处理部分生成的结果列表,那么代码将无限期地运行。你知道吗

我已经删除了打印长度部分和代码运行成功,将终止。我也尝试过各种方法,比如getvalues()copy.copy()copy.deepcopy(),尝试复制列表并使用它进行操作,但这也不起作用。你知道吗

from multiprocessing import Pool

def multiproc(tuple_list):
    if __name__ == '__main__':
        p = Pool(4) 
        end_tuple_list = p.starmap(get_stats, tuple_list)
        p.close()
        p.join()
        print(str(end_tuple_list))
        return end_tuple_list

res_tuple_list = multiproc(tuple_list))
print(str(res_tuple_list))
print('length is ' +str(len(res_tuple_list)))

我希望能够像任何普通的list一样使用生成的res_tuple_list,但是每当我试图以任何方式操作它时,代码都不会终止,而且我认为在多处理完成之前代码会被卡住。你知道吗


Tags: 代码列表reslistendprintpoolcopy