首页 > 解决方案 > 进行多处理的最佳方法?

问题描述

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

假设,我有一个学生 ID 列表。对于每个学生,我需要应用读取学生数据和计算学生整体成绩等操作。然后每个进程将最终结果存储到多处理管理器字典中。然后字典将在主进程中处理并保存到数据库中。

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

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

我可以这样做还是应该使用其他方式进行多处理?在这个过程中也有任何死锁的机会。

标签: pythonmultiprocessing

解决方案


推荐阅读