【代码学习】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 ...
随机推荐
- 导入org.apache.poi.xssf 读取excel
POI 操作 excel 用XSSF 方式时,如果不能自动导入 org.apache.poi.xssf 对应jar 包,则可以Apache 官网进行下载,自行导入. step1: 访问 http:/ ...
- Python调用libsvm
# -*- coding: utf-8 -*- import os, sys path = r"D:\Program Files (x86)\libsvm-3.22\python" ...
- ubuntu中安装和卸载apache2
1. 安装apache2 安装命令: sudo apt-get install apache2 启动/停止/重启apache2: service apache2 start/stop/restart ...
- t-SNE
Don't look back. Don't hesitate, just do it. t-SNE原理 from here. 1. tsne is strictly used for visuali ...
- JAVA 注解教程(一)简单介绍
相关网址 https://blog.csdn.net/briblue/article/details/73824058 --- 已经整理成笔记 https://blog.csdn.net/bao199 ...
- [USACO16OPEN]248&262144
Description 在1*n的序列中,每次可以合并两个相邻且相等的数,变成它们两个加1,求最大的数. Solution 设\(f[i][j]\)表示\([i,k)\)这个区间能合并出\(j\)的最 ...
- 整理收集的一些常用java工具类
1.json转换工具 package com.taotao.utils; import java.util.List; import com.fasterxml.jackson.core.JsonPr ...
- nginx的错误处理
以下是针对nginx发生错误的处理方案(将会持续更新) 遇到 nginx: [error] invalid PID number "" in "/var/run/ngin ...
- sql server下载教程
进入官网:https://www.microsoft.com/zh-cn/download/details.aspx?id=29066 点击下载即可: 安装教程:可去csdn下载: win10系统下安 ...
- 微信h5游戏如何在微信中做好域名防封 防屏蔽的 工作
最近微信开始大封杀,不知道原因是什么,可能是因为违规网站太多了吧,很多网站都被错杀了,下面我们聊一下怎样才能避免域名被封杀呢. 在各种不同的域名当中,能够做出了更适合的选择,这些对于大家域名防封_域名 ...