Python-进程相关概念
名词解释:
执行代码
1. 建立开启子进程两种方式
from multiprocessing import Process
import os
import time # 开启子进程的两种方式
# 方式1
def run(num):
print('子进程%s执行,进程id:%s' % (num, os.getpid()))
time.sleep(1.5)
print('子进程%s结束,进程id:%s' % (num, os.getpid())) if __name__ == '__main__':
print('父进程执行,进程id:%s' % os.getpid())
for i in range(3):
p = Process(target=run, args=(i,))
p.start()
print('父进程结束,进程id:%s' % os.getpid()) # 进程代码逐行读取,主进程不会等待子进程结束(主进程,子进程异步)
# 执行结果
父进程执行,进程id:4472
子进程0执行,进程id:4473
父进程结束,进程id:4472
子进程1执行,进程id:4474
子进程2执行,进程id:4475
子进程0结束,进程id:4473
子进程1结束,进程id:4474
子进程2结束,进程id:4475 # 方式2,继承Process类
class MyProcess(Process):
def __init__(self, name):
super().__init__()
self.name = name def run(self):
print('子进程%s,进程id:%s' % (self.name, os.getpid())) if __name__ == '__main__':
print('父进程开始')
p = MyProcess('jason')
p.start() # 自动触发调用类中的run方法
p.join()
print('父进程结束')
# 执行结果
父进程开始
子进程jason,进程id:4486
父进程结束
2. 进程的常用方法
# p.start(); p.join(); p.is_alive(); p.terminate()
def func():
print('测试进程中常用方法') if __name__ == '__main__':
p = Process(target=func,)
p.start() # 开启一个进程
p.terminate() # 杀掉一个进程
print(p.is_alive()) # 判断进程是否还存活
p.join() # 等待进程结束,再继续向下执行;异步变同步
print(p.is_alive())
print('父进程结束')
# 执行结果
True
False
父进程结束
3. 进程的属性
# p.name; p.pid; p.daemon = True(将进程p变为守护进程,daemon默认为False)
def func():
n = 1
while n:
time.sleep(1)
print('测试进程的属性--%s' % n)
n += 1 if __name__ == '__main__':
p = Process(target=func,)
p.daemon = True # 子进程变为守护进程; 守护进程会随着父进程的结束而结束; 守护进程不能创建子进程
p.start()
print(p.name) # 获取子进程名
print(p.pid) # 获取进程ID
time.sleep(5)
print('父进程结束')
# 执行结果
Process-1
4512
测试进程的属性--1
测试进程的属性--2
测试进程的属性--3
测试进程的属性--4
父进程结束
Python-进程相关概念的更多相关文章
- [操作系统知识储备,进程相关概念,开启进程的两种方式、 进程Queue介绍]
[操作系统知识储备,进程相关概念,开启进程的两种方式.进程Queue介绍] 操作系统知识回顾 为什么要有操作系统. 程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作 ...
- python——进程基础
我们现在都知道python的多线程是个坑了,那么多进程在这个时候就变得很必要了.多进程实现了多CPU的利用,效率简直棒棒哒~~~ 拥有一个多进程程序: #!/usr/bin/env python #- ...
- 使用gdb调试Python进程
使用gdb调试Python进程 有时我们会想调试一个正在运行的Python进程,或者一个Python进程的coredump.例如现在遇到一个mod_wsgi的进程僵死了,不接受请求,想看看究竟是运行到 ...
- python进程、线程、协程(转载)
python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资 ...
- Python进程、线程、协程详解
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- python进程池剖析(一)
python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要 ...
- python——进程、线程、协程
Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...
- python/进程线程的总结
python/进程线程的总结 一.进程和线程的描述: 进程:最小的资源管理单位 线程:最小的执行单位 执行一个进程时就默认执行一个线程(主线程) 进程和线程的工作方式: 串行: 假如共有A.B.C任务 ...
- python 进程介绍 进程简单使用 join 验证空间隔离
一.多道程序设计技术(详情参考:https://www.cnblogs.com/clschao/articles/9613464.html) 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行 ...
- Python 进程之间共享数据
最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看. 一.Python multiprocessing 跨进程对象共享 在mp库当中,跨进程对象共享有三种方式,第一种 ...
随机推荐
- HandlerMethodArgumentResolver(三):基于消息转换器的参数处理器【享学Spring MVC】
每篇一句 一个事实是:对于大多数技术,了解只需要一天,简单搞起来只需要一周.入门可能只需要一个月 前言 通过 前面两篇文章 的介绍,相信你对HandlerMethodArgumentResolver了 ...
- Salesforce LWC学习(五) LDS & Wire Service 实现和后台数据交互 & meta xml配置
之前的几节都是基于前台变量进行相关的操作和学习,我们在项目中不可避免的需要获取数据以及进行DML操作.之前的内容中也有提到wire注解,今天就详细的介绍一下对数据进行查询以及DML操作以及Wire S ...
- Django + JQuery + ajax实时显示数据
1 创建django项目 :Visualization and APP :Demo >>django-admin startproject Visualization >>p ...
- 通过Web安全工具Burp suite找出网站中的XSS漏洞实战(二)
一.背景 笔者6月份在慕课网录制视频教程XSS跨站漏洞 加强Web安全,里面需要讲到很多实战案例,在漏洞挖掘案例中分为了手工挖掘.工具挖掘.代码审计三部分内容,手工挖掘篇参考地址为快速找出网站中可能存 ...
- SDU暑期集训排位(5)
SDU暑期集训排位(5) A. You're in the Army Now 题意 类似选志愿.每个人有 mark,有优先级从高到低的志愿. 做法 定睛一看,鲨鼻题.然后 WA. 为什么会 WA 呢? ...
- hdu 4612 无向图连通分量缩点,然后求树的最大直径
#pragma comment(linker,"/STACK:102400000,102400000") #include <iostream> #include &l ...
- JUC(1)
cmd目录切换 D:\>cd /d D:\Program Files\Java\jdk1.8.0_201\bin 1. JUC 简介 在 Java 5.0 提供了 java.util.concu ...
- Java开发必备工具 ------------工欲善其事,必先利其器
java企业级开发基本工具 一.开发必备工具 1.Java开发环境 JDK (官网下载即可,需要注册账户) JRE 2.Java企业编码开发工具 IntelliJ IDEA(建议使用Idea,插件使用 ...
- ASP.NET MVC实现依赖注入
在java的spring中有自动注入功能,使得代码变得更加简洁灵活,所以想把这个功能移植到c#中,接下来逐步分析实现过程 1.使用自动注入场景分析 在asp.net mvc中,无论是什么代码逻辑分层, ...
- 【Offer】[57-2] 【和为S的连续正数序列】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数).例如,输入15,由于1+2+3+4+5=4+5+6=7+8=15,所以 ...