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


版权声明:著作权归作者所有。

相关推荐

Git同步主仓库的代码到fork仓库

首先需要添加主仓库为本地的远程仓库。配置远程仓库1、在本地项目的目录下,查看已配置的远程仓库$git remote -v origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch) origin  https://github.com/YOUR_USERNAME/

Python安全创建目录的方法

在介绍Python安全创建目录之前,先举一个不安全创建目录的方式:if not os.path.exists(directory):     os.makedirs(directory) 在例子里,先判断目录是否存在,然后创建目录。这种方式是不安全的,它会导致竞争条件。在os.path.exists()和os.makedirs()之间的时

Android:解决android.os.NetworkOnMainThreadException问题

原因当应用在主线程执行网络操作时会抛出此异常android.os.NetworkOnMainThreadException。解决方法把执行网络的操作的代码放到AsyncTask里可以避免此问题。示例:class MyConnectTas extends AsyncTask {     @Override  &

Django:创建JSON响应

Django 1.7之前版本在Django1.7之前可以结合json以及HttpResponse创建json响应import json from django.http import HttpResponse response_data = {} response_data['result'] = 'er

Linux下查看进程所使用的环境变量

在Linux下直接执行env命令即可获取当前的环境变量[xxxx ~]$$ env HOSTNAME=iZ94lykym6iZ TERM=linux SHELL=/bin/bash HISTSIZE=1000 ... 进程的环境变量可以在/proc/<pid>/environ查看,其中<pid>为进程id获取进程id使用ps获取pid[xxxx