iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python全栈的进程和守护进程是怎样的
  • 366
分享到

Python全栈的进程和守护进程是怎样的

2023-06-22 05:06:32 366人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这期内容当中小编将会给大家带来有关python全栈的进程和守护进程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 理解进程进程的概念:(process)进程就是正在运行的程序,它是操作系统中,

这期内容当中小编将会给大家带来有关python全栈的进程和守护进程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

1. 理解进程

进程的概念:(process

进程就是正在运行的程序,它是操作系统中,资源分配的最小单位.资源分配:分配的是cpu和内存等物理资源进程号是进程的唯一标识同一个程序执行两次之后是两个进程进程和进程之间的关系: 数据彼此隔离,通过Socket通信

并行和并发

并发:一个cpu同一时间不停执行多个程序并行:多个cpu同一时间不停执行多个程序

Python全栈的进程和守护进程是怎样的

cpu的进程调度的方法:

# 先来先服务fcfs(first come first server):先来的先执行# 短作业优先算法:分配的cpu多,先把短的算完# 时间片轮转算法:每一个任务就执行一个时间片的时间.然后就执行其他的.# 多级反馈队列算法越是时间长的,cpu分配的资源越少,优先级靠后越是时间短的,cpu分配的资源越多

Python全栈的进程和守护进程是怎样的

4作业分别给0.4秒,1作业完成,2、3、4作业没有完成,会放到二级队列中,把后续短的作业放到一级队列。二级队列中的作业分别给0.3秒,2号作业完成,3、4号作业放到三级队列,分别给0.2秒,3作业完成,4号没有完成,放到四号队列,给0.1秒进行处理,1号作业有可能是下载作业。

进程三状态图:

Python全栈的进程和守护进程是怎样的

(1)就绪(Ready)状态只剩下CPU需要执行外,其他所有资源都已分配完毕 称为就绪状态。(2)执行(Running)状态cpu开始执行该进程时称为执行状态。(3)阻塞(Blocked)状态由于等待某个事件发生而无法执行时,便是阻塞状态,cpu执行其他进程.例如,等待I/O完成input、申请缓冲区不能满足等等。

Python全栈的进程和守护进程是怎样的

同步 异步 / 阻塞 非阻塞:

场景在多任务当中同步:必须等我这件事干完了,你在干,只有一条主线,就是同步异步:没等我这件事情干完,你就在干了,有两条主线,就是异步阻塞:比如代码有了input,就是阻塞,必须要输入一个字符串,否则代码不往下执行非阻塞:没有任何等待,正常代码往下执行.# 同步阻塞  :效率低,cpu利用不充分# 异步阻塞  :比如socketserver,可以同时连接多个,但是彼此都有recv# 同步非阻塞:没有类似input的代码,从上到下执行.默认的正常情况代码# 异步非阻塞:效率是最高的,cpu过度充分,过度发热 液冷

守护进程:

#可以给子进程贴上守护进程的名字,该进程会随着主进程代码执行完毕而结束(为主进程守护)(1)守护进程会在主进程代码执行结束后就终止(2)守护进程内无法再开启子进程,否则抛出异常(了解)

锁(Lock):

lock.acquire()# 上lock.release()# 解锁#同一时间允许一个进程上一把锁 就是Lock加锁可以保证多个进程修改同一块数据时,同一时间只能有一个任务可以进行修改,即串行的修改,没错,速度是慢了,但牺牲速度却保证了数据安全。#同一时间允许多个进程上多把锁 就是[信号量Semaphore]信号量是锁的变形: 实际实现是 计数器 + 锁,同时允许多个进程上锁# 互斥锁Lock : 互斥锁就是进程的互相排斥,谁先抢到资源,谁就上锁改资源内容,为了保证数据的同步性# 注意:多个锁一起上,不开锁,会造成死锁.上锁和解锁是一对.

2. 进程的语法

# ### 进程 processimport os,time"""# ps -aux 查看进程号# ps -aux | grep 2784 过滤查找2784这个进程# 强制杀死进程kill -9 进程号# 获取当前进程号res = os.getpid()print(res)# 获取当前进程的父进程res = os.getppid()print(res)"""from multiprocessing import Process# (1) 进程的使用"""def func():# 1.子进程id:3561,2.父进程id:3560print("1.子进程id:{},2.父进程id:{}".fORMat(os.getpid(),os.getppid()))if __name__ == "__main__":# 创建子进程 ,返回进程对象p = Process(target=func)# 调用子进程p.start()# 3.主进程id:3560,4.父进程id:3327print("3.主进程id:{},4.父进程id:{}".format(os.getpid(),os.getppid()))"""# (2) 创建带有参数的进程"""def func(n):time.sleep(1)for i in range(1,n+1): # 0 ~ n-1print(i)print("1.子进程id:{},2.父进程id:{}".format(os.getpid(),os.getppid()))if __name__ == "__main__":n = 6# target=指定任务  args = 参数元组p = Process(target=func , args=(n,))p.start()for i in range(1,n+1):print("*" * i)"""# (3) 进程之间的数据彼此隔离"""total = 100def func():global totaltotal +=1print(total)if __name__ == "__main__":p = Process(target=func)p.start()time.sleep(1)print(total)"""# (4) 进程之间的异步性"""1.多个进程之间是异步的并发程序,因为cpu调度策略问题,不一定先执行哪一个任务默认来看,主进程执行速度稍快于子进程,因为子进程创建时,要分配空间资源可能会阻塞阻塞态,cpu会立刻切换任务,以让程序整体的速度效率最大化2.默认主进程要等待所有的子进程执行结束之后,在统一关闭程序,释放资源若不等待,子进程可能不停的在系统的后台占用cpu和内存资源形成僵尸进程.为了方便进程的管理,主进程默认等待子进程.在统一关闭程序;"""def func(n):print("1.子进程id:{},2.父进程id:{}".format(os.getpid(),os.getppid()) , n )if __name__ == "__main__":for i in range(1,11):p = Process(target=func,args=(i,))p.start()print("主进程执行结束了 ... " , os.getpid() )

3. join自定义进程类

子进程全部执行完,在执行主进程

# ### 1.同步主进程和子进程 : join"""必须等待当前的这个子进程执行结束之后,再去执行下面的代码;,用来同步子父进程;"""from multiprocessing import Processimport time # (1) join 的基本使用"""def func():print("发送第一封邮件 :  我的亲亲领导,你在么?")if __name__ == "__main__":p = Process(target=func)p.start()# time.sleep(0.1)p.join()print("发送第二封邮件 :  我想说,工资一个月给我涨到6万")"""# (2) 多进程场景中的join"""def func(i):time.sleep(1)print("发送第一封邮件{} :  我的亲亲领导,你在么?".format(i))if __name__ == "__main__":lst = []for i in range(1,11):p = Process(target=func,args=(i,))p.start()# join 写在里面会导致程序变成同步lst.append(p)# 把所有的进程对象都放在列表中,统一使用.join进行管理;for i in lst:i.join()print("发送第二封邮件 :  我想说,工资一个月给我涨到6万")"""# ### 2使用自定义进程类,创建进程# (1) 基本语法import osclass MyProcess(Process):def run(self):print("1.子进程id:{},2.父进程id:{}".format(os.getpid(),os.getppid()))if __name__ == "__main__":p = MyProcess()p.start()# (2) 带有参数的自定义进程类class MyProcess(Process):def __init__(self,name):# 手动调用一下父类的构造方法,完成系统成员的初始化;super().__init__()self.name = namedef run(self):print("1.子进程id:{},2.父进程id:{}".format(os.getpid(),os.getppid()))print(self.name)if __name__ == "__main__":p = MyProcess("我是参数")p.start()

4. 守护进程

# ### 守护进程"""守护进程守护的是主进程,当主进程所有代码执行完毕之后,立刻强制杀死守护进程;"""from multiprocessing import Processimport time# (1) 基本语法"""def func():# time.sleep(1)print("start... 当前的子进程")print("end ...  当前的子进程")if __name__ == "__main__":p = Process(target=func)# 在进程启动之前,设置守护进程p.daemon = Truep.start()print("主进程执行结束 ... ")"""# (2) 多个子进程的守护场景;"""默认主进程等待所有非守护进程,也就是子进程执行结束之后,在关闭程序,释放资源守护进程只要在主进程代码执行结束时,就会自动关闭;""""""def func1():print("start ... func1 执行当前子进程 ... ")print("end ...   func1 结束当前子进程 ... ")def func2():count = 1while True:print("*" * count)time.sleep(1)count += 1if __name__ == "__main__":p1 = Process(target=func1)p2 = Process(target=func2)# 把p2这个进程变成守护进程;p2.daemon = Truep1.start()p2.start()print("主进程执行结束 ... ")"""# (3) 守护进程用途: 监控报活def alive():while True:print("3号服务器向总监控服务器发送报活信息: i am ok~")time.sleep(1)def func():while True:try:print("3号服务器负责抗住3万用户量的并发访问...")time.sleep(3)# 主动抛出执行错误的异常,触发except分支raise RuntimeErrorexcept:print("3号服务器扛不住了.. 快来修理我..")breakif __name__ == "__main__":p1 = Process(target=alive)p2 = Process(target=func)p1.daemon = Truep1.start()p2.start()# 必须等待p2这个子进程执行完毕之后,再放行主进程下面的代码# 下面主进程代码执行结束,立刻杀死守护进程,失去了报活功能;p2.join()print("主进程执行结束  .... ")#作业:""" 使用多进程的方式  完成tcp服务端的并发 """

小提示:

在调用的时候触发装饰器连续发包的时候才会粘包容器不能转化成字节流,机器交互用JSON文件对象是迭代器,迭代器返回的数据是一行行返回的创建子进程的时候,要为其分配资源,处于堵塞状态,会去执行下面的程序,这就是异步执行,两条主线不刷新页面就能发文数据的技术叫ajax,是一种异步程序进程是典型的异步程序看一下super()这个函数默认主进程走完了守护进程会立即被杀死,但是会等待子进程运行完毕

上述就是小编为大家分享的Python全栈的进程和守护进程是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网Python频道。

--结束END--

本文标题: Python全栈的进程和守护进程是怎样的

本文链接: https://www.lsjlt.com/news/302812.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python全栈的进程和守护进程是怎样的
    这期内容当中小编将会给大家带来有关Python全栈的进程和守护进程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1. 理解进程进程的概念:(process)进程就是正在运行的程序,它是操作系统中,...
    99+
    2023-06-22
  • Python全栈之进程和守护进程
    目录1. 理解进程2. 进程的语法3. join自定义进程类4. 守护进程总结 1. 理解进程 进程的概念:(process) 进程就是正在运行的程序,它是操作系统中,资源分配的...
    99+
    2022-11-12
  • 如何进行Python进程的守护进程实施
    如何进行Python进程的守护进程实施,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python进程这一计算机语言在实际的应用中,如果你在实际应用的过程中遇到相...
    99+
    2023-06-17
  • python中的daemon守护进程实现
    守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。 ...
    99+
    2023-01-31
    进程 python daemon
  • python使用fork实现守护进程的方法
    os模块中的fork方法可以创建一个子进程。相当于克隆了父进程 os.fork() 子进程运行时,os.fork方法会返回0; 而父进程运行时,os.fork方法会返回子进程的PID号。 所以可以使用PI...
    99+
    2022-06-04
    进程 方法 python
  • Python如何实现守护进程的方法示例
    场景设置: 你编写了一个python服务程序,并且在命令行下启动,而你的命令行会话又被终端所控制,python服务成了终端程序的一个子进程。因此如果你关闭了终端,这个命令行程序也会随之关闭。 要使你的py...
    99+
    2022-06-04
    示例 如何实现 进程
  • SAP ABAP守护进程的实现方式是什么
    本篇文章给大家分享的是有关SAP ABAP守护进程的实现方式是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Linux系统很多服务都通过守护进程实现,常见的守护进程有系统日...
    99+
    2023-06-03
  • DaemonSet服务守护进程的使用场景是什么
    这篇文章主要介绍“DaemonSet服务守护进程的使用场景是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“DaemonSet服务守护进程的使用场景是什么”文章能帮助大家解决问题。DaemonSe...
    99+
    2023-06-29
  • Linux进程关系是怎样的
    本篇内容主要讲解“Linux进程关系是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux进程关系是怎样的”吧!Linux的进程相互之间有一定的关系。比如说,在Linux进程基础中,我...
    99+
    2023-06-05
  • oracle后台进程是怎样的
    这篇文章将为大家详细讲解有关oracle后台进程是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。oracle后台进程伴随实例的启动而启动,他们主要是维...
    99+
    2022-10-19
  • Kill session 和orakill的会话及进程是怎么样的
    今天就跟大家聊聊有关Kill session 和orakill的会话及进程是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一个用户进程偶尔会挂起或占用过多资源而拒绝其它会话。...
    99+
    2023-06-06
  • MongoDB命令行与进程是怎样的
    本篇文章给大家分享的是有关MongoDB命令行与进程是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、命令行MongoDB shell...
    99+
    2022-10-18
  • Container内部进程监控是怎样的
    这篇文章主要介绍“Container内部进程监控是怎样的”,在日常操作中,相信很多人在Container内部进程监控是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Container内部进程监控是怎样的...
    99+
    2023-06-05
  • linux系统进程管理是怎样的
    本篇内容介绍了“linux系统进程管理是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、进程与线程的概念来源百度百科:进程(Proc...
    99+
    2023-06-22
  • JavaScript 25年来的历史进程是怎样的
    这期内容当中小编将会给大家带来有关JavaScript 25年来的历史进程是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JavaScript于25年前(1995年...
    99+
    2022-10-19
  • Python进程和线程的概念是什么
    这篇文章主要介绍“Python进程和线程的概念是什么”,在日常操作中,相信很多人在Python进程和线程的概念是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python进程和线程的概念是什么”的疑惑有所...
    99+
    2023-06-02
  • python是怎样实现监控指定进程的cpu和内存使用率
    这篇文章给大家介绍python是怎样实现监控指定进程的cpu和内存使用率,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。为了测试某个服务的稳定性,通常需要在服务长时间运行的情况下,监控其资源消耗情况,比如cpu和内存使用...
    99+
    2023-06-22
  • 分布式架构的演进过程是怎样的
    本篇内容介绍了“分布式架构的演进过程是怎样的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!架构是演变而来的,不是设计出来的。没有最好的架构,...
    99+
    2023-06-02
  • Linux内核进程管理的基础是怎样的
    本篇文章为大家展示了Linux内核进程管理的基础是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。内核通过 task_struct 描述进程用命令 pstree 可以让内核以树形的结构把进程之间...
    99+
    2023-06-15
  • Linux中Kill命令的进程调度是怎样的
    本篇文章为大家展示了Linux中Kill命令的进程调度是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一丶进程管理Linux 是一种动态系统,能够适应不断变化的计算需求。Linux 计算需求的...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作