272 千锋Python教程:1 19 7 进程间通信
外来客 • 2026-08-21 19:24:51
声明:本文为对公开内容的摘要整理,
未经本站独立核实,可能与原内容存在出入,不代表本站立场、观点或建议;
观点与版权归原作者及原平台所有。
如涉及版权问题,请联系我们,核实后立即删除。
[ 免责声明 ]
📚 进程间通信基础概念
- 进程间通信(IPC)的核心场景是任务分工:一个进程负责生产数据(如下载文件),另一个进程负责消费数据(如保存文件)。
- 这种模式允许并行处理,例如在边下载边保存的过程中,两个进程独立运行但需要交换数据。
- 由于进程拥有独立的内存空间,直接通过变量传递数据不可行,必须借助共享对象进行通信。
- 本教程使用 Python 的 `multiprocessing` 模块中的 `Queue`(队列)作为进程间通信的媒介。
🛠️ 代码实现步骤
- 导入模块:从 `multiprocessing` 导入 `Process` 和 `Queue`,从 `time` 导入 `sleep`。
- 定义任务函数:
- `download` 函数:模拟下载过程,遍历图片列表,打印下载状态,调用 `time.sleep` 模拟耗时,最后将图片名称放入队列(`q.put`)。
- `get_file` 函数:从队列中获取数据(`q.get`),打印保存成功信息。
- 创建队列:实例化一个 `Queue` 对象,该对象将被两个进程共用。
- 创建进程:
- 实例化 `Process` 对象,指定 `target` 为对应的任务函数。
- 通过 `args` 参数将共用的 `Queue` 对象传递给两个进程,确保它们引用同一个队列实例。
- 启动进程:调用 `start()` 方法启动两个进程。
- 等待进程结束:调用 `join()` 方法,确保主进程等待子进程执行完毕后再继续,防止资源提前回收。
⚠️ 关键注意事项与陷阱
- 参数传递规范:创建进程时,`target` 参数必须传入函数名(不带括号),若传入函数调用结果则无法执行预期任务。
- 队列阻塞机制:`Queue.get()` 默认是阻塞的。若队列中无数据,消费进程会一直等待,直到生产进程放入数据。
- 资源回收风险:若主进程未调用 `join()` 等待子进程结束,主进程可能提前结束并回收内存,导致子进程中的队列对象失效,引发数据丢失或程序异常。
- 无限循环处理:若消费进程使用 `while True` 循环不断取数据,会导致进程无法自然结束。
- 解决方案:在 `get` 操作中设置 `timeout` 超时时间。
- 异常处理:使用 `try-except` 捕获超时异常,当超时发生时执行 `break` 跳出循环,从而正常结束进程。
- 文档阅读重要性:开发中遇到不熟悉的 API,应优先查阅官方文档(如 Python 3.6 文档),了解参数含义(如 `target`、`args`)及用法,而非仅依赖源码或猜测。
📝 核心结论
- 进程间通信通过共享 `Queue` 对象实现,生产端 `put` 数据,消费端 `get` 数据。
- 必须使用 `join()` 确保子进程完成,避免主进程提前退出导致资源回收。
- 对于持续消费的进程,需结合 `timeout` 和异常处理机制来优雅地终止循环,防止程序挂起。
👤 同一博主
310 千锋Python教程:3 1 5 插入数据
293 千锋Python教程:2 3 7 Vim查找替换+文件搜索
295 千锋Python教程:2 4 2 网络可达性检查和DDoS攻击
297 千锋Python教程:2 5 1 安装MariaDB
296 千锋Python教程:2 4 3 systemctl和netstat命令
292 千锋Python教程:2 3 6 Vim中的宏操作
300 千锋Python教程:2 6 1 安装Git
298 千锋Python教程:2 5 2 安装Redis
299 千锋Python教程:2 5 3 进程管理
294 千锋Python教程:2 4 1 安全的远程连接+安全文件拷贝+安全文件传输
🧭 类似博主
-
圣安东尼奥马刺队主教练米奇·约翰逊谈比赛:进攻战术、防守理念与实战复盘 | AWS 赞助的教练角
-
约会应用已彻底改变——大多数男性尚不知如何玩转新规则
-
尼泊尔再发“土石流”致5人失踪:上游“土砂坝”溃决?【报道Station】(2026年10月12日)
-
方舟子科普:刘欢之死和音乐的作用
-
科学的尽头真的是玄学吗?窦文涛对谈顶尖物理学家:看物理学家如何用量子力学和价值观,彻底解构人类的审美
-
專題播客|《碳基的幸福生活》“呼吸篇” 暢聊“呼吸”的幸福奧秘 #鳳凰衛視 #碳基的幸福生活
-
如果外星人看到人類的社群媒體,他們會笑嗎?拆解TikTok、IG與演算法背後的人類行為黑盒!『外星視
-
为应对海水上溯 平陆运河在青年枢纽上游6.8公里处新建钦州水厂泵站《平陆运河》02【CCTV纪录】
-
胡其英21岁嫁给了35岁宋美龄弟弟宋子安28年后宋子安去世,她嫁给比她大7岁埃及🇪🇬富商法耶兹,3年
-
佛陀千年前就說破宇宙絕密真相!不只地球,十億個太陽同時生滅!看懂這個降維尺度,你所有的焦慮瞬間化為灰
0 条评论
发表评论
请先 登录 后参与讨论。