VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Python基础教程 >
  • python基础教程之Python—创建进程的三种方式

本站最新发布   Python从入门到精通|Python基础教程
试听地址  
https://www.xin3721.com/eschool/pythonxin3721/


方式一:os.fork()

  • 子进程是从os.fork得到的值,然后赋值开始执行的。即子进程不执行os.fork,从得到的值开始执行。
  • 父进程中fork之前的内容子进程同样会复制,但父子进程空间独立,fork之后的修改不会影响到对方。
  • 父子进程在执行上互不影响,谁先执行,谁先执行完不确定。
  • 父子进程之间相互独立,全局变量,局部变量都互不影响。
  • 父进程执行完就结束,子进程会继续执行。主进程不会因为子进程没结束而等待。
  • 子进程虽然复制父进程的空间,但是有自己的特性,比如自己的PID,进程PCB,进程栈空间等。

单个fork

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import os, time
 
g_num = 100
ret = os.fork()   # 父进程得到的ret的值等于子进程的pid。子进程得到的ret的值等于0。
        
if ret < 0:
    print "---创建一级子进程失败---"
elif ret == 0:
    print "---子进程的pid:%d" % os.getpid()
    g_num += 1
else:
    print "---父进程的pid:%d" % os.getpid()
    while True:
        time.sleep(3)
        break
print "进程执行完毕", g_num      # 父进程打印结果为:100,子进程打印结果为:101

多个fork

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import os,time
 
# 父进程执行下面的fork
ret = os.fork()
if ret==0:
    print("--1--")   # 子进程
else:
    print("--2--")   # 父进程
 
# 父子进程都执行下面的fork,即父子进程都创建了子进程,此时共有四个进程
ret = os.fork()
if ret==0:
    print("--11--")
else:
    print("--22--")
相关教程