python什么时候用多进程编程-Python教程

资源魔 40 0
正在并发编程的时分,多线程以及多过程是常常会被应用的两种模式(别的另有协程等)。因为 CPython 的 GIL 限度(Jython 以及 IronPython 不 GIL,PyPy 正在测验考试去掉 GIL),只有猎取了 GIL 的线程能力应用 CPU,以是除了了需求解决一些可能会梗阻的 IO(读写文件、拜访网络等)以外,根本没人会去应用 CPython 的多线程。因而,本文就来讲说更有用的 Python 多过程编程。

注:保举学习:Python视频教程)

本文形容的环境为 Linux 操作零碎(也实用于年夜局部 POSIX 零碎)下的 CPython,可能没有实用于 Windows操作零碎或其余的Python 完成。

为了不歧义,下文用「主过程」或「以后过程」示意创立子过程的阿谁过程,而没有应用「父过程」,除了非明白指清楚明了「xx 的父过程」。

与多线程编程时需求通报一个 callable 工具没有同的是,多过程编程的时分,是将主过程复制到子过程,其实不能间接要求子过程执行某个 callable 工具。

正在 POSIX 零碎中,这个复制操作是由 clone() 以及 fork() 零碎挪用来实现的,普通次要应用后者。
假如 fork() 执行胜利的话,会辨别正在主过程以及子过程中前往子过程的 PID 以及 0,而后执行代码就开端没有同了。假如失败的话(内存不敷、PID 达到下限等),子过程就没有会创立,主过程会前往 -1,errno 会被设置为对应的谬误码。
正在 CPython 的完成中,os.fork() 次要是对 fork() 函数的封装,差异正在于失败时抛出 OSError,该异样的 errno 属性是对应的谬误码。

因而,多过程的 Python 代码大抵会长成这样:

import os

try:
    pid = os.fork()
    if pid == 0:  # 子过程
        # 子过程的代码
    else:  # 主过程
        # 主过程的代码
except OSError:
    # 主过程解决 fork 失败的代码

更多Python相干技巧文章,请拜访Python教程栏目进行学习!

以上就是python何时用多过程编程的具体内容,更多请存眷资源魔其它相干文章!

标签: Python python教程 python编程 python使用问题

抱歉,评论功能暂时关闭!