初识并发编程
程序员文章站
2022-04-24 21:57:22
操作系统简单介绍 多道技术: 空间复用:把许多进程都放入内存中,等待操作系统操作 时间复用:在内存中一个程序中有io阻塞程序,操作系统会在程序阻塞时,执行其他的程序 进程之间是空间隔离的 并发 伪并行,看着像同时运行,其实是任务之间的切换(遇到io切换的会提高代码效率) ,任务切换+保存状态(保存现 ......
操作系统简单介绍
多道技术:
空间复用:把许多进程都放入内存中,等待操作系统操作
时间复用:在内存中一个程序中有io阻塞程序,操作系统会在程序阻塞时,执行其他的程序
进程之间是空间隔离的
并发
伪并行,看着像同时运行,其实是任务之间的切换(遇到io切换的会提高代码效率) ,任务切换+保存状态(保存现场)
并行
真正的同时在运行,应用的是多核技术(多个cpu)
进程三状态:就绪(等待操作系统调度去cpu里面执行) 执行 阻塞
提交任务的方式:同步异步 任务的执行状态:阻塞非阻塞
异步:任务的提交方式,多个任务提交出去,同时执行
:
异步非阻塞:
多个任务同时提交,并且在程序运行的时候没有阻塞
进程的两种创建方式
1)
process( target=f1, args=(i,) ( 或者 kwargs={‘形参名为key:值} ) )
from multiprocessing import process def f1(n): print(n) if __name__ == '__main__': # p1 = process(target=f1,args=('钢铁侠',)) #创建进程对象 p1 = process(target=f1,kwargs={'n':'钢铁侠'}) #创建进程对象 p1.start()
2)
from multiprocessing import process class myprocess(process): def __init__(self,n): super().__init__() #别忘了执行父类的init self.n = n def run(self): print('宝宝and%s'%self.n) if __name__ == '__main__': p1 = myprocess('苍老师') p1.start()
join方法
主进程等待子进程执行结束再继续执行
import time from multiprocessing import process def f1(): time.sleep(2) print('xxxx') def f2(): time.sleep(2) print('ssss') if __name__ == '__main__': p1 = process(target=f1,) p1.start() p1.join() # 主进程等待子进程运行完才继续执行 print('开始p2拉') p2 = process(target=f2,) p2.start() p2.join() print('我要等我的子进程...') print('我是主进程')
for 循环开启进程
import time from multiprocessing import process def f1(i): time.sleep(3) print(i) if __name__ == '__main__': for i in range(20): p1 = process(target=f1,args=(i,)) p1.start()
上一篇: 设计模式之☞策略模式
下一篇: python命令行模式和交互模式学习讲解