最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python fork方法:创建新进程

    正文概述    2020-04-21   205

    Python fork方法:创建新进程

    除可以进行多线程编程之外,Python 还支持使用多进程来实现并发编程。

    Python 的 os 模块提供了一个 fork() 方法,该方法可以 fork 出来一个子进程。简单来说,fork() 方法的作用在于,程序会启动两个进程(一个是父进程,一个是 fork 出来的子进程)来执行从 os.fork() 开始的所有代码。

    fork() 方法不需要参数,它有一个返回值,该返回值表明是哪个进程在执行:

    如果 fork() 方法返回 0,则表明是 fork 出来的子进程在执行。

    如果 fork() 方法返回非 0,则表明是父进程在执行,该方法返回 fork() 出来的子进程的进程 ID。

    下面程序示范了使用 fork() 方法创建新进程的过程:

    import os
    
    print('父进程(%s)开始执行' % os.getpid())
    # 开始fork一个子进程
    # 从这行代码开始,下面代码都会被两个进程执行
    pid = os.fork()
    print('进程进入:%s' % os.getpid())
    # 如果pid为0,表明子进程
    if pid == 0:
        print('子进程,其ID为 (%s), 父进程ID为 (%s)' % (os.getpid(), os.getppid()))
    else:
        print('我 (%s) 创建的子进程ID为 (%s).' % (os.getpid(), pid))
    print('进程结束:%s' % os.getpid())

    上面程序 fork 出来一个子进程,这意味着程序会分别使用父进程和子进程来执行从此行代码开始的代码。

    在 Linux 或 Mac OS X 系统上运行上面程序(Windows 不支持 fork() 方法,因此在 Windows 系统上运行上面程序会报锚),可以看到如下运行结果:

    父进程(1795)开始执行
    进程进入:1795
    我(1795)创建的子进程ID 为(1796).
    进程结束:1795
    进程进入:1796
    子进程,其ID 为(1796),父进程ID 为(1795)
    进程结束: 1796

    从上面的运行结果可以看到,此时程序分别使用两个进程执行从“进程进入”到“进程结束”之间的代码,这就是 os.fork() 方法的作用。

    在实际编程中,程序可通过 fork() 方法来创建一个子进程,然后通过判断 fork() 方法的返回值来确定程序是否正在执行子进程,也就是把需要并发执行的任务放在 if pid==0: 的条件执行体中,这样就可以启动多个子进程来执行并发任务。

    需要注意的是,os.fork() 方法在 Windows 系统上无效,只在 UNIX 及类 UNIX 系统上有效,UNIX 及类 UNIX 系统包括 UNIX、Linux 和 Mac OS X。

    起源地下载网 » Python fork方法:创建新进程

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元