昨日回顾
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('主')
以上是关于昨日回顾的主要内容,如果未能解决你的问题,请参考以下文章