【代码学习】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 ...
随机推荐
- 高效完成R代码
为什么R有时候运行慢? 参考https://www.cnblogs.com/qiaoyihang/p/7779144.html 一.为什么R程序有时候会很慢? 1.计算性能的三个限制条件 cpu ra ...
- 问题解决:局域网内,为啥别人ping不到我的IP
试着在本地搭建一个测试环境,成功后却发现同一局域网的同事根本访问不了,他们ping不到我的IP,这可咋整! 询问度娘后,我的问题得到了,以下是我的总结,如果解决不了你的问题,还请继续百度. 方法一:关 ...
- samba搭建共享目录
centos 中使用docker 运行samba docker pull dperson/samba 运行一下命令 docker run -it -p 139:139 -p 445:445 --nam ...
- 爬虫实战 豆瓣音乐top250 xpath
刷知乎时刷到一篇爬取豆瓣音乐top250的,然后看了看,感觉自己的爬虫又更上一层楼了哈啊哈哈,尤其是发现xpath这么好用的东西. 不过也有一个感慨,就是有很多种方式都可以获得想要的数据,对于入门的新 ...
- 解决linux 中文乱码
解决办法是在文件/etc/profile末尾添加一行 echo 'export LC_ALL="en_US.UTF-8"' >> /etc/profile source ...
- kali 插上耳机没声音
这几天装kali装的真是心力憔悴,好不容易勉强可以使用了,插上耳机想要放松下,结果没有声音? excusu me? 在经历各种方法之后终于找到了解决方法,亲测可行. 1.先打开终端,输入systemc ...
- js数组和对象
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JS高级---原型和原型链
原型和原型链 原型链是一种关系, 实例对象和原型对象之间的关系,关系是通过实例对象中浏览器使用的原型(__proto__)来联系的 自定义构造函数,通过实例化,创建实例对象 实例对象中__proto_ ...
- 普及C组第二题(8.5)
1565. [GDKOI]神秘山庄 (Standard IO) 时间限制: 1000 ms 空间限制: 262144 KB 题目: 翠亨村是一个神秘的山庄,并不是因为它孕育了伟人孙中山,更神秘的是山 ...
- spring_boot 中通过PageHelper分页
1. 第一步 导入pom.xml依赖 <!--PageHelper模版--> <!--PageHelper模版--> <dependency> <groupI ...