一、进程和程序的区别

  编写完毕的代码,在没有运行的时候称之为程序

  正在运行的代码,称之为进程

  进程除了包含的代码意外,还需要运行的环境等

二、fork

import os
import time
# 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以
ret = os.fork()
if ret == 0:
while True:
print ("----1----")
time.sleep(1)
else:
while True:
print ("----2----")
time.sleep(1)

以上代码运行结果:

----2----
----1----
----2----
----1----
----2----
----1----
----2----
----1----
----2----
----1----

注意:

>0 为主(父)进程  ==0位子进程

1、fork函数,只在Unix/Linux/Mac上运行,windows不可以

2、程序执行到os.fork()时,操作系统会创建一个新的进程(子进程),然后复制父进程的所有信息到子进程中

三、getpid()和getppid()

1、getpid()获取当前进程的ID值

2、getppid()获取子进程中父进程ID号

  1 import os
2 rpid = os.fork()
3 print ("父子进程都可以执行这里的代码")
4 if rpid < 0:
5 print ("fork调用失败")
6 elif rpid == 0:
7 print ("我是子进程(%s),我是父进程(%s)"%(os.getpid(),os.getppid()))
8 else:
9 print ("我是父进程(%s),我是父进程(%s)"%(os.getpid(),rpid))
10 print ("父子进程都可以执行这里的代码")

以上代码运行结果

我是父进程(6811),我是父进程(6812)
父子进程都可以执行这里的代码
root:~$ 我是子进程(6812),我是父进程(4788)
父子进程都可以执行这里的代码

四、父子进程的执行顺序

父进程、子进程执行顺序没有规律,完全取决于操作系统的调度算法

五、多进程修改全局变量

多进程中,每个进程中所有数据(包括全局变量)都各有拥有一份,互不影响

import os
import time
g_num = 100
ret = os.fork()
if ret ==0:
print ("----process-1----")
g_num += 1
print ("----process-1 g_num=%d----"%g_num)
else:
time.sleep(3)
print ("----process-2----")
print ("----process-2 g_num=%d----"%g_num)

以上代码运行结果:

----process-1----
----process-1 g_num=101----
----process-2----
----process-2 g_num=100----

六、多个fork问题

import os
os.fork()
os.fork()
os.fork()
print ("----1----")

以上代码运行结果:

----1----
----1----
----1----
----1----

【代码学习】PYTHON 进程的更多相关文章

  1. Python学习——Python进程

    python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包multiprocessing,只需要定 ...

  2. 通过代码学习python之@property,@staticmethod,@classmethod

    URL: https://www.the5fire.com/python-property-staticmethod-classmethod.html #coding=utf-8 class MyCl ...

  3. 编写高质量代码改善python程序91个建议学习01

    编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...

  4. python 进程和线程(代码知识部分)

    二.代码知识部分 一 multiprocessing模块介绍: python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情 ...

  5. python学习之-- 进程 和 线程

    python 进程/线程详解 进程定义:以一个整体的形式暴露给操作系统管理,它里面包含对各种资源的调用,内存的管理,网络接口的调用等等,对各种资源管理的集合,就可以叫做一个进程. 线程定义:线程是操作 ...

  6. Python学习之进程

    8.2 进程 8.2.1 进程的创建 开启多进程scoketserver:server.client 进程的开启:python中的多线程,一定是有一个主进程,由主进程创建几个子进程, Linux与Wi ...

  7. 学习Python编程的11个资源

    用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因 ...

  8. 学习Python编程的11个精品资源

    本文由 伯乐在线 - atupal 翻译自 Alex Ivanovs.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程 ...

  9. Python3 学习Python流程--试水中

    二.基础语法之后可以搭载服务器练习: 教程 一.1.Python 搭建环境. 初学基本语法 :Python基本语法 2.推荐 IDE :  PyCharm CE 下载 菜鸟教程都是基础语法,可以对py ...

随机推荐

  1. 《深入理解Java虚拟机》读书笔记六

    第七章 虚拟机类加载机制 1.类加载的时机 虚拟机的类加载机制: 虚拟机把描述类的数据从class文件中加载到内存,并对数据进行校验.转换解析和初始化,最终形成了可以被虚拟机直接使用的Java类型,这 ...

  2. 题解【洛谷P1725】琪露诺

    题面 典型的单调队列优化\(\text{DP}\)题. 不难想到设\(dp_i\)表示以\(i\)结尾能得到的最大冰冻指数. 这样设的转移方程也很简单:\(dp_i=\max\left\{ dp_j+ ...

  3. EF简单的CodeFirst示例(自己创建数据库,不使用数据迁移)

    1.新建一个控制台应用程序 2.右键引用--管理NuGet程序包,安装如下几项 3.打开App.config文件,加入如下代码: <connectionStrings>    <ad ...

  4. xrdp---远程桌面连接

    xrdp is an Open Source Remote desktop Protocol server, which allows you to RDP to your Linux server ...

  5. 【原】librtmp源码详解

    “悟已往之不谏,知来者之可追”.后悔做了这么久的直播,却不曾理解rtmp协议的实现原理,现在意识到了这个问题,特此补救.同时谨以此文纪念曾经的雷霄骅同学,感谢他对音视频领域做出的卓越贡献和引领. 1. ...

  6. TD - 单选框 - RadioButton

    基本方法 Html - 默认选中 //checked="true" - 默认选中 <input dojoType="bootstrap.form.RadioButt ...

  7. 在Unity3d中使用Google.ProtocolBuffers

    通过Nuget下载Google.ProtocolBuffers,在目录中找到net35下的文件,放入unity3d中作为插件 PersonMessage.Builder personBuilder = ...

  8. 麦子html基础

    一.基础语法 1.基本结构

  9. 实现排行榜神器——redis zset

    需求:假如现在需要搞个 “运动消耗卡路里排行榜”,例似微信步数排名,显示排名前20人的信息和消耗的卡里路,怎样实现排序? 一般思路:存储信息,然后数据库查询,排序?(假如有几十万人参与排名,这样查my ...

  10. usage: git remote add [<options>] <name> <url> -f, --fetch fetch the remote branches --tags import all tags and associated objects when fetching

    按照git官网提示输入 git pushgit remote add origin git@github.com:***3 / elm-1.git -u 链接git远程仓库 出现错误 usage: g ...