【代码学习】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 ...
随机推荐
- 安卓模拟器genymotion 安装使用
下载:https://www.genymotion.com/download/ 安装前先注册: https://www.runoob.com/w3cnote/android-tutorial-geny ...
- MFC对话框常用操作文章收藏
1.改变控件文本 参考链接:https://blog.csdn.net/active2489595970/article/details/88856235 所有控件的文本都可以用这种方式动态改变. 2 ...
- 第四篇,JavaScript面试题汇总
JavaScript是一种属于网络的脚本语言,已经被广泛用于web实用开发,常用来为网页添加各种各样的动态功能,为用户提供更流畅美观的浏览效果.通常JavaScript脚本是通过嵌入在HTML中来实现 ...
- SpringBoot整合WEB开发--(一)处理JSON返回数据
1.使用默认的json转换HttpessageConverter Json是目前主流的前后端数据传输方式,SpringMVC中使用消息转化器HttpMessageConverter对JSON的转换提供 ...
- 麦子html基础
一.基础语法 1.基本结构
- jmeter+ant+jenkins接口自动化测试框架
大致思路:Jmeter可以做接口测试,也能做压力测试,而且是开源软件:Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台,Jenkins是持续集成工具.将这三者结合起来可以搭建 ...
- 题解【loj6277】数列分块入门1
题目描述 给出一个长为\(n\)的数列,以及\(n\)个操作,操作涉及区间加法,单点查值. 输入格式 第一行输入一个数字\(n\). 第二行输入\(n\)个数字,第\(i\)个数字为\(a_{i}\) ...
- 【C语言】移动指针
移动指针 #include<stdio.h> int main() { char *s="哈哈哈哈哈哈"; for(*s;s!="\0";s++) ...
- 每天进步一点点------Allegro 怎样把铺铜显示关掉,但是走线要显示?
[背景] 铺铜是PCB布线的末尾环节,在PCB设计后期审查中,我们会检查走线的规则,但是铺铜后,不容易看见走线的效果,这时我们需要关闭铺铜显示,但是走线任然要显示. [解决方法] 执行Setup-&g ...
- Django的安装、使用详解、自动化测试应用以及程序打包
1.Django的安装 pip install Django 验证 Django 是否能被 Python 识别 >>> import django >>> prin ...