在主过程中需要每个过程的结果的使用多处理的最佳方法是什么?
假设,我有一个学生证的清单。对于每个学生,我需要应用操作,例如读取学生的数据并计算学生的总体结果。然后,每个过程将最终结果存储到多处理管理器字典中。然后将在主要过程中将字典处理到并保存到数据库中。
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
我担心这样做是否正确,因为在许多教程中,他们说不要使用共享状态并使用队列。但是,当我使用队列时,进程挂起了。可能是因为队列中有大量结果。
我可以这样做还是应该使用其他任何方式进行多处理?在此过程中也有可能出现僵局。