zoukankan      html  css  js  c++  java
  • 进程的基础概念

    进程基础知识

    什么是程序

    程序就是一堆文件

    什么是进程

    一个正在执行的文件或程序(抽象的概念)

    进程与程序的区别

    进程是正在运行的程序

    程序被谁执行

    CPU最终运行程序

    通过操作系统的调度作用,将磁盘上的程序加载到内存,然后交由CPU去处理,一个CPU正在运行一个程序,就叫开启了一个进程

    串行

    所有的进程由CPU一个一个的解决

    并发

    伪并行,即单个CPU,同时执行多个进程(一个CPU在多个进程间来回切换,看起来像是同时运行)

    并行

    多个CPU,真正的同时运行多个程序(如果程序数大于CPU数,就结合并发运行)

    阻塞

    遇到IO才叫阻塞(一个CPU同时运行两个进程,假设其中一个进程完全没有阻塞,也会强制切换)

    非阻塞

    没有IO

    进程的三种状态

    进程的创建

    什么是开启多个进程

    例如socket模块的server端和client端,就是两个进程

    在python中,如果想开启多个进程,必须是通过一个主进程开启多个子进程

    Linux和Windows创建多进程的区别

    相同点

    都是由主进程开启子进程,两个进程都有相互隔离独立的空间,互不影响

    不同点

    Linux中子进程空间的初始数据完全是从主进程copy一份

    Windows中子进程空间的初始数据也是从主进程copy一份,但有所不同

    开启多进程的两种方式

    from multiprocessing import Process
    import time
    
    def task(name):
        print(f'{name} is running')
        time.sleep(3)
        print('GOAL!!!')
    
    if __name__ == '__main__':  # windows环境下,开启多进程一定放在这个下面
        p = Process(target=task,args=('Messi',))  # args 一定是一个元组的形式.
        p.start()   # 通知操作系统,你给我在内存中开辟一个空间,将p这个进程放进去,然后让cpu执行.
        print('主进程')
    通过函数(推荐)
    from multiprocessing import Process
    import time
    
    class MyProcess(Process):
    
        def __init__(self, name):
            super().__init__()  # 必须要继承父类的__init__
            self.name = name
    
        def run(self):  # 必须定义run名字.
            print(f'{self.name} is running')
            time.sleep(3)
            print('SLAM DUNK!!!')
    
    if __name__ == '__main__':  # windows环境下,开启多进程一定放在这个下面
        p = MyProcess('LeBron')
        p.start()   # 通知操作系统,你给我在内存中开辟一个空间,将p这个进程放进去,然后让cpu执行.
        print('主进程')
    通过类(了解)
  • 相关阅读:
    3D 服务器端以向量计算为主的角色位置的算法
    宇宙中可见物质为 4%,暗物质和暗能量占 96% 是怎么算出来的?
    量子纠缠
    “人的第一感觉(直觉)其实非常准”
    有哪些看似荒谬,其实很科学的理论@知乎、@量子力学
    CPU/寄存器/内存
    原子操作
    简单的介绍下WPF中的MVVM框架
    IOS开发中,TextField和TextView有何区别
    年后小结
  • 原文地址:https://www.cnblogs.com/biulo/p/11214467.html
Copyright © 2011-2022 走看看