昨日回顾

Posted aden668

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了昨日回顾相关的知识,希望对你有一定的参考价值。

昨日回顾

多道技术:

? 空间复用:多个程序公用一个内存条,彼此隔离,物理级别隔离

? 时间复用:公用一个cpu

切换的情况:

? io切,占用时间过长也切

串行:一个任务完完整整的运行结束,再运行下一个任务.

并发:看起来是同时执行多个任务 单核

并行:真正的做到了同时执行多个任务 多核

#开启子进程的方式
#####方式一
from multiprocessing import Process


def task():
    pass


if __name__ == '__main__':
    p = Process(target=task)
    p.start()
##### 方式二

from multiprocessing import Process

class MyP(Process):
    def run(self):
        pass

if __name__ == '__main__':
    p = MyP()
    p.start() # 给操作系统发一个亲请求,操作系统去开进程
    print('sadf')

join回顾

from multiprocessing import Process
import time,os

def task(s):
    time.sleep(s)


if __name__ == '__main__':

    p1 = Process(target=task,args=(100,))
    p2 = Process(target=task,args=(2,))
    p3 = Process(target=task,args=(3,))

    p1.start()
    p2.start()
    p3.start()
    p1.join() # 等1s,
    p2.join() # 等1s,
    p3.join() # 等1s,内部会调用wait()
    print(p1.pid)
    print('子',p1.pid)
    print('主',os.getpid()) # 主进程要等待所有的子进程结束才会结束.因为主进程要在结束前回收僵尸进程.(*****)

僵尸进程: 没有死透的子进程

孤儿进程: 子进程运行的过程父进程死了就变成了孤儿进程,被进程init接管.

父进程一直不死,一直在开启子进程,意味着占用过过多的pid并且不回收.

解决方案: 强制杀死这个父进程.

守护进程

#本质也是进程
#主进程的代码执行完毕守护进程直接结束
#大前提:主进程结束前守护进程一直运行着
from multiprocessing import Process
import time
def task():
    print('守护进程  start')
    # time.sleep(4)
    print('守护进程  end')


if __name__ == '__main__':
    p = Process(target=task)
    p.daemon = True
    p.start()
    time.sleep(2)
    print('主')

以上是关于昨日回顾的主要内容,如果未能解决你的问题,请参考以下文章

昨日回顾

新的一天!昨日内容回顾+购物车系统的初步实现+字典的概念和基本操作

20200310 CMDB基础设计

1211 BBS后台管理文章添加

前端04 /css样式

20200312 CMDB的磁盘数据查询