python - 进行多处理的最佳方法?
问题描述
在主进程中需要每个进程的结果时,使用多处理的最佳方法可能是什么?
假设,我有一个学生 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
我担心这是否是正确的做法,因为在许多教程中他们说不要使用共享状态并使用队列。但是当我使用队列时,进程挂起。可能是因为队列中有大量结果。
我可以这样做还是应该使用其他方式进行多处理?在这个过程中也有任何死锁的机会。
解决方案
推荐阅读
- azure-devops - 针对不同分支/环境的不同 azure-pipelines.yml
- r - R - lm p 值循环
- dataframe - 在其中一个单元格中创建带有矢量元素的数据框 - Rstudio
- python - 如何在Python中添加包含对应列名最大的列?
- javascript - 如何通过 jquery 以 2 秒的间隔刷新特定的 js 或 css 文件?
- json - Postman 数组模式验证
- terraform - 由于 i/o 超时,Provisioner 文件失败
- microsoft-graph-api - 我可以避免在 o365 活动创建过程中向活动参与者发送电子邮件吗?
- android - 在没有用户交互和 root 权限的情况下静默更新 android 应用程序的问题
- spring-boot - 通过 Jenkins SCM 构建和运行 Docker 映像(Jenkinsfile 与代码一起推送到 repo),Jenkins 本身在 docker 中运行,使用 dockerfile