多线程与线程Python我在努力理解多处理过关穿线..我知道多处理绕过Global解释器锁,但是还有什么其他的优势,并且可以穿线不做同样的事?
4 回答
繁星coding
TA贡献1797条经验 获得超4个赞
多处理
行家
分离内存空间 代码通常很简单 利用多个CPU和核心 避免cPython的Gil限制 消除了对同步原语的大多数需求,除非您使用共享内存(相反,它更像是IPC的通信模型) 子进程是可中断/可杀死的。 Python multiprocessing
模块包含了与接口非常类似的有用的抽象。 threading.Thread
必须与cPython一起进行cpu绑定处理。
反方
IPC更复杂,开销更大(通信模型与共享内存/对象) 更大的内存占用
穿线
行家
轻量级-低内存占用空间 共享内存-使从另一个上下文访问状态更容易。 允许您轻松地做出响应性的UI。 正确释放GIL的cPythonC扩展模块将并行运行 I/O绑定应用程序的最佳选择
反方
cPython-服从GIL 不可中断的/可杀死的 如果没有遵循命令队列/消息泵模型(使用 Queue
),然后手动使用同步原语就成了必要的(锁定的粒度需要决策)。 代码通常更难理解和正确-竞赛条件的潜力急剧增加。
四季花海
TA贡献1811条经验 获得超5个赞
添加回答
举报
0/150
提交
取消