进行多处理的最佳方法?

时间:2019-06-11 03:44:36

标签: python multiprocessing

在主过程中需要每个过程的结果的使用多处理的最佳方法是什么?

假设,我有一个学生证的清单。对于每个学生,我需要应用操作,例如读取学生的数据并计算学生的总体结果。然后,每个过程将最终结果存储到多处理管理器字典中。然后将在主要过程中将字典处理到并保存到数据库中。

import multiprocessing as mp

def main():
    manager = mp.Manager()
    student_dict = manager.dict()
    processes = []
    for student_id in student_ids:
       process = multiprocessing.process(target=process_student,
                                      args=student_dict)
       processes.append(process)
       process.start()

    for key, value in student_dict.items():
         #save to db

for process in processes:
    process.join()

def process_student():
    read_student()
    calculate_student_results()

def read_student():
    #operation

def calculate_student_results():
    #operation
    student_dict[key] = value

我担心这样做是否正确,因为在许多教程中,他们说不要使用共享状态并使用队列。但是,当我使用队列时,进程挂起了。可能是因为队列中有大量结果。

我可以这样做还是应该使用其他任何方式进行多处理?在此过程中也有可能出现僵局。

0 个答案:

没有答案