首页 > 系统相关 >子进程相关基础知识

子进程相关基础知识

时间:2022-11-18 21:45:32浏览次数:55  
标签:__ Process parm 基础知识 import 进程 相关 数据

昨日内容回顾

  • 粘包问题及解决思路

    粘包问题:TCP协议下将人认知中应该分来的数据打包发送,导致所谓粘包问题。

    解决思路:

    明确应接收数据的长度(至少首次收到的数据长度应明确),其余数据长度根据首次数据解析出→

    使用struct模块对原数据长度进行加工,得到固定长度数据发送→

    接收数据方对数据进行解析,得到原数据长度,然后接收原数据。

  • 操作系统的发展

    穿孔纸片——联机批处理——脱机批处理。本质是CPU利用率提升的过程。

  • 进程理论基础

    单道:一次只运行一个程序,运行结束前不做其他操作。

    多道:在多个程序之间切换,每次切换保存运行状态。

    并行:多个CPU同时运行。

    并发:单个CPU同时运行多个进程。

    CPU分配算法:时间片轮转+多级反馈队列。

    进程三状态:就绪态、阻塞态、运行态。

今日内容概要

  • 进程相关术语
  • 创建进程的方式
  • 进程的同步方法
  • 进程间数据交互
  • 进程对象的内置方法
  • 特殊情况下的进程

今日内容详细

进程相关术语

同步:程序运行与时间经过同步,分支步骤完成后再向下运行。

异步:程序运行与时间不完全同步,不等分支步骤完成直接向下运行。

异步可以提高CPU的利用率,因此,在非必要的情况下一般使用异步设计。

创建新进程的方式

一种是使用multiprocessing模块。

from multiprocessing import Process  # 导入模块


def func(parm):  # 定义子进程内容
    print(parm)

    
if __name__ == '__main__':
    p1 = Process(target=func, ags=(parm1,))  # 创建新的子进程,指定目标函数、传参
    p1.start()  # 执行子进程

另一种是使用类生成新的进程对象。

from multiprocessing import Process
import time


class MyProcess(Process):  # 继承原Process类生成新类
    def __init__(self, parm):
        super().__init__()
        self.parm = parm
        

    def run(self):  # 指定新进程需要执行的内容
        print('run is running', self.parm)
        time.sleep(3)
        print('run is over', self.parm)


if __name__ == '__main__':
    obj = MyProcess('parm')  # 生成新进程对象
    obj.start()  # 执行新进程

进程的同步方法

使用进程对象的内置函数join(),在子进程执行后下一行调用join方法,程序会等待子进程运行结束再向下运行。

进程间的数据交互(IPC)

使用消息队列实现进程间的数据交互,多个进程可使用同一个消息队列内的数据。

from multiprocessing import Queue

q = Queue(int)  # 生成新的队列对象,需要指定队列容量
q.put(obj)  # 依次放入数据值
q.get(obj)  # 依次取出数据值
q.full()  # 判断队列是否已满
q.empty()  # 判断队列是否已空

进程对象的内置方法

1.如何查看进程号
	from multiprocessing import Process, current_process
 	current_process()
 	current_process().pid  
	import os
 	os.getpid()
  	os.getppid()
2.终止进程
	p1.terminate()
	ps:计算机操作系统都有对应的命令可以直接杀死进程
3.判断进程是否存活
	p1.is_alive()

特殊情况下的进程

子进程与主进程绑定存活(守护进程)

在子进程开始运行之前指定子进程的daemon为True,则子进程就会成为主进程的守护进程,主进程结束意味着守护对象的消失,子进程则无存活必要,与主进程一起消亡。

僵尸进程

任何进程都有成为僵尸进程的时期,僵尸进程的时期为进程结束后的一小段时间,此时进程已结束,但进程相关的数据尚未完全删除,等待系统回收其对应内存。

孤儿进程

指主进程结束后还未结束的子进程,此时系统会指定某个进程作为其父进程,直至子进程结束运行。

标签:__,Process,parm,基础知识,import,进程,相关,数据
From: https://www.cnblogs.com/akazukis/p/16904966.html

相关文章