python进程(一)之fork

0人阅读 评论(0) 收藏 举报
分类:

Python的os模块封装了常见的系统调用,其中就包括fork,可以在Python程序中轻松创建子进程:

   import os

    # 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以
    pid = os.fork()

    if pid == 0:
        print('哈哈1')
    else:
        print('哈哈2')
输出结果:
哈哈2
哈哈1

程序执行到os.fork()时,操作系统会创建一个新的进程(子进程),然后复制父进程的所有信息到子进程中
然后父进程和子进程都会从fork()函数中得到一个返回值,在子进程中这个值一定是0,而父进程中是子进程的 id号
在Unix/Linux操作系统中,提供了一个fork()系统函数,它非常特殊。

普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。

子进程永远返回0,而父进程返回子进程的ID。

这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getppid()就可以拿到父进程的ID。

查看评论

python fork()创建新的进程,daemon进程

python中如果要创建新进程的话,可以使用os模块中的fork方法。为了了解其中工作原理,笔者结合linux的查看进程ps命令,对这个方法做了一些测试。 python运行时进程 python一开...
  • u013636377
  • u013636377
  • 2016-05-18 11:17:31
  • 870

Python进程分支fork和exec详解

在python中,任务并发一种方式是通过进程分支来实现的.在linux系统在,通过fork()方法来实现进程分支. - fork()调用后会创建一个新的子进程,这个子进程是原父进程的副本.子进程可以...
  • csujiangyu
  • csujiangyu
  • 2015-04-07 10:52:52
  • 2021

APUE笔记---第八章 进程控制(函数fork、exit、wait等)

APUE笔记—第八章 进程控制1. 进程标识 每一个进程都有一个非负整数作为唯一进程ID。所以应用程序有时把进程ID作为名字的一部分来创建一个唯一的文件名。 虽然进程是唯一的,但是进程ID是可复用的。...
  • men_wen
  • men_wen
  • 2016-11-10 22:48:43
  • 520

Linux学习之进程fork()、exec、exit()/_exit()、wait()/waitpid

fork()函数 进程是一个程序的一次执行的过程。它和程序是有本质区别的,程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括了动...
  • wuqishuang
  • wuqishuang
  • 2015-09-12 21:14:19
  • 1232

有意思的进程创建函数fork() && fork() || fork() .

OK,我们看一道有意思的问题: 1 2 3 4 5 6 7 #include int main() {   fork();   fork()&&fork()||fo...
  • Wen_dy
  • Wen_dy
  • 2015-05-08 09:53:36
  • 1334

python中使用fork创建新的进程

python中如果要创建新进程的话,可以使用os模块中的fork方法。为了了解其中工作原理,笔者结合linux的查看进程ps命令,对这个方法做了一些测试。 python运行时进程 pyth...
  • zkaipmoo
  • zkaipmoo
  • 2013-12-10 18:24:09
  • 1688

使用python的os.fork()为一个主进程生成多个子进程

先熟悉一下基础: 语句pid=os.fork(),会为当前进程产生一个子进程并返回两个值,为父进程返回子进程的进程ID,为子进程返回0。 语句r,w=os.pipe(),将创建一个读写的单向管道,用于...
  • tdmyl
  • tdmyl
  • 2013-08-28 22:28:06
  • 4127

linux进程控制函数--fork,exec,exit,wait,sleep

1.fork 在linux系统中,用户创建进程的唯一方法就是使用系统调用fork,大概要进行下面的操作。 .分配表项,一个用户的进程项是有限的; .创建子进程的进程标识号; .复制父进程中的项...
  • sinat_15799399
  • sinat_15799399
  • 2014-10-17 17:33:43
  • 2213

python fork()多进程

一、理解fork() fork()是一个绝对唯一的调用。Python
  • u013713637
  • u013713637
  • 2014-10-28 10:22:13
  • 2011

(三)Linux进程、fork、wait、exec函数

Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。每个进程都是一个独立的运行单位,拥有各自的权利和责任。其中,各个进程都运行在独立的虚拟地址空间,因此,即使一个进程发生异常,它...
  • haha1fan
  • haha1fan
  • 2017-08-01 13:11:36
  • 227
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 1403
    排名: 3万+