zoukankan      html  css  js  c++  java
  • 进程的概念和剖析

    1.操作系统的发展史(经历的三个阶段)

         1.穿孔卡片 ======》2.磁带 ========》3.批处理

        经历的三个阶段的变化,本质上无非是想要提高CPU的利用效率。

    2.多道程序设计和单道程序设计的理念

        多道程序设计:1.空间上的复用:他们共同使用一台计算机上的硬件设备。

               2.时间上的复用:就拿做家务来说,你洗衣服需要45分钟,在这45分钟里你可以完成烧水10分钟的事情和30分钟的做饭两件事,但是完成的总时间是只有45分钟。

               3.CPU在程序中来回切换程序进行执行

               4.CPU在以下两种情况下才会切换:1.程序占用了太长时间的CPU

                               2.遇到了IO

        多道模型图:

          程序1进入 ========》=========》========》程序1结束

               程序2进入:=========》========》========》程序2结束

       单道程序设计:后面的程序必须等到前面的程序执行完了以后才可以进入。时间的成本是累计的

       单道模型图:

         程序1进入:=====》======》======》程序1结束的同时程序2进入:=====》======》=====》程序2结束的同时程序3进入:..

    3.进程

     进程:正在运行的程序

     程序:一堆等待执行的代码

     进程是一个个的实体。每个进程都有它独立的内存空间。

    4.同步和异步:他们是针对提交方式来分割的

      同步:一个程序提交自己的任务和请求后,在原地什么都不做等待这对方的回答!

       异步:一个程序提交自己的任务和请求后,不用在原地等待,可以做自己的事情,不用等待对方的回答!

    5.阻塞和非阻塞:他们是以状态来分割的

      阻塞:阻塞就是遇到了IO操作,进入阻塞态

      非阻塞:就是就绪态和运行态

    6.开启进程的两种方式

    from multiprocessing import Process
    import time
    
    
    def task(name):
        print('%s is running' % name)
        time.sleep(3)
        print('%s is over' % name)
    
    
    if __name__ == '__main__':
        p = Process(target=task, args=('wanglei',))
        p.start()
    方式一
    from multiprocessing import Process
    import os
    import time
    
    
    class Myprocess(Process):
        def __init__(self, name):
            super().__init__()
            self.name = name
    
        def run(self):
            print('%s is running!' %self.name, os.getpid())
            time.sleep(3)
            print('%s is over' % self.name, os.getpid())
    
    
    if __name__ == '__main__':
        p = Myprocess('egon')
        p.start()
        print('主进程!', os.getpid())
    方式二

    7.进程中的join方法的声明和使用

    from multiprocessing import Process
    import time
    
    
    def task(name):
        print('%s is running' % name)
        time.sleep(2)
        print('%s is over' % name)
    
    
    if __name__ == '__main__':
        p = Process(target=task, args=('haha',))
        p.start()
        # p.join()  # 等到子进程结束以后在执行主进程
        print('主进程')
    进程中的join方法
  • 相关阅读:
    编译原理-确定有穷自动机(deterministic finite automata ,DFA)
    编译原理-正规式和正规集
    linux之sed用法
    Linux 中find命令
    运维工作应该掌握哪些技能?
    Last_SQL_Error: Error 'Can't drop database
    关于在centos下安装python3.7.0以上版本时报错ModuleNotFoundError: No module named '_ctypes'的解决办法
    python3.7安装, 解决pip is configured with locations that require TLS/SSL问题
    Linux date命令的用法(转)
    MySQL回滚到某一时刻数据的方法
  • 原文地址:https://www.cnblogs.com/wanglei957/p/10821501.html
Copyright © 2011-2022 走看看