【代码学习】PYTHON 进程
一、进程和程序的区别
编写完毕的代码,在没有运行的时候称之为程序
正在运行的代码,称之为进程
进程除了包含的代码意外,还需要运行的环境等
二、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 进程的更多相关文章
- Python学习——Python进程
python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程.Python提供了非常好用的多进程包multiprocessing,只需要定 ...
- 通过代码学习python之@property,@staticmethod,@classmethod
URL: https://www.the5fire.com/python-property-staticmethod-classmethod.html #coding=utf-8 class MyCl ...
- 编写高质量代码改善python程序91个建议学习01
编写高质量代码改善python程序91个建议学习 第一章 建议1:理解pythonic的相关概念 狭隘的理解:它是高级动态的脚本编程语言,拥有很多强大的库,是解释从上往下执行的 特点: 美胜丑,显胜隐 ...
- python 进程和线程(代码知识部分)
二.代码知识部分 一 multiprocessing模块介绍: python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情 ...
- python学习之-- 进程 和 线程
python 进程/线程详解 进程定义:以一个整体的形式暴露给操作系统管理,它里面包含对各种资源的调用,内存的管理,网络接口的调用等等,对各种资源管理的集合,就可以叫做一个进程. 线程定义:线程是操作 ...
- Python学习之进程
8.2 进程 8.2.1 进程的创建 开启多进程scoketserver:server.client 进程的开启:python中的多线程,一定是有一个主进程,由主进程创建几个子进程, Linux与Wi ...
- 学习Python编程的11个资源
用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因 ...
- 学习Python编程的11个精品资源
本文由 伯乐在线 - atupal 翻译自 Alex Ivanovs.欢迎加入技术翻译小组.转载请参见文章末尾处的要求. 用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程 ...
- Python3 学习Python流程--试水中
二.基础语法之后可以搭载服务器练习: 教程 一.1.Python 搭建环境. 初学基本语法 :Python基本语法 2.推荐 IDE : PyCharm CE 下载 菜鸟教程都是基础语法,可以对py ...
随机推荐
- linux切换普通用户遇bash-4.1解决
1,修改vim /etc/passwd 把对应用户的登陆环境改成,/bin/bash 2,复制配置 cp -a /etc/skel/. /home/www/ 3再次尝试su www有效
- 题解【洛谷P3574】[POI2014]FAR-FarmCraft
题面 简化版题意: 有一棵 \(n\) 个点的树,有边权. 你初始在 \(1\) 号节点,你需要走遍整棵树为 \(2 \sim n\) 号点的居民分发电脑,但你的汽油只够经过每条边恰好两次. 一个居民 ...
- TP5和TP3.2的使用区别
模板标签不一样: TP5 可在配置文件中自行定义自己喜欢的标签 TP5 使用双标签 如:{foreach} {/foreach} TP3 : <> TP5 :{} 调用数据表方式: M( ...
- C++——简单程序设计
1.一个简单的程序 #include <iostream> //iostream是头文件,用来说明要使用的对象的相关信息. using namespace std; //使用命名空间,解决 ...
- 基于Java在线学习系统设计与实现
Spring+SpringMVC+MyBatis+Bootstrap+Vue开发在线学习系统 本课题的主要内容是开发基于Java EE的在线学习平台,使用MVC经典开发模式. ...
- python lambda ,map详解
lambda 匿名函数 # 普通定义函数 def func1(x,y): return x+y # 执行函数 print(func(1,2)) # 如果此函数只调用一次,或者功能简单,此方法就显得笨拙 ...
- IntelliJ IDEA 2017.3尚硅谷-----取消更新
- css美化Div边框的样式实例*(转载)
css美化Div边框的样式实例 很多时候如果不是用了很多样式,很难把边框修饰得好看,看了一篇博文,觉得真的挺漂亮,也挺好看. 转载的博文地址 将这段美化的css代码 border:1px soli ...
- DuPan不限速教程
准备: 1.一个百度网盘链接 2.一个可以切换UA的浏览器, 手机版:via,极速浏览器,Kiwi浏览器(推荐)电脑版:未知 3.你的手和脑子
- 软件工程2020第一次作业(by cybersa)
1 作业描述 作业属于哪个课程 2020春福大软工实践W班 这个作业要求在哪里 寒假作业(1/2) 这个作业的目标 建立博客.掌握markdown语法,学习写博客,回顾,总结,展望自己的学习历程 作业 ...