发布于 4年前

Python使用os.fork()创建子进程

导入os模块

首先要导入os模块,如下:

import os

使用os.fork()创建进程

使用fork创建一个新的进程后,新进程是原进程的子进程,原进程为父进程。如果发生错误,则会抛出OSError异常。

-*- coding: utf-8 -*-
import time
import os
try:
   pid = os.fork()
except OSError:
    pass
time.sleep(20)

os.fork()会发生以下事情:

子进程会复制父进程的数据,包括父进程数据空间、堆、栈等资源。需要注意的是,子进程持有的是上述存储空间的“副本”,父子进程间不共享存储空间,它们之间共享的只有代码段。

接着父子进程继续并行运行后面的代码,这也是fork(分叉)名字的含义。在子进程内,这个方法会返回0;在父进程内,这个方法会返回子进程的编号PID。这样就可以实现父子进程并发处理。

示例:通过processId区分父子进程

# -*- coding: utf-8 -*-
import time
import os
#创建子进程前声明的变量
number = 7
try:
    pid = os.fork()
    if pid == 0:
        print("this is child process")
        number = number - 1
        time.sleep(5)
        print(number)
    else:
        print("this is parent process")
except OSError:
    pass
©2020 edoou.com   京ICP备16001874号-3