进程与程序 并行 并发 串行 阻塞 join函数

本文详细解释了进程、并发、并行与串行的概念,探讨了阻塞与非阻塞状态的区别,以及进程的三种基本状态。通过Python的multiprocessing模块示例,展示了如何创建和管理子进程,实现进程间的并行执行。

进程是正在运行的程序,程序是程序员编写的一对代码,也就是一堆字符,当这堆代码被系统加载到内存并执行,就有了进程。

(需要注意的是:一个程序是可以产生多个程序,就像我们可以同时运行多个QQ程序一样,会形成多个进程)

并发指的是,多个事件同时发生了(单核状态下就是通过切换+保存状态 就是多道技术
)                                                                                           并行:真正意义上的同时执行(只在

多核处理器才有可能出现

)                                                                                           串行:按照顺序依次执行 第一行执行完毕才会执行第二行,需要注意的是 串行执行的过程中因为计算操作太多 也会导致程序卡住 但是这与io阻塞是不同的io阻塞立马将cpu切换到其他程序  而串行执行一堆计算任务 cpu没有切走

阻塞与非阻塞指的是程序的状态                                                     

阻塞状态指的是因为程序遇到了io操作,或者是sleep,导致后续代码不被cpu执行                                                 非阻塞与之相反,表示程序正在被cpu执行                        补充:进程的三种状态                                                       就绪态,运行态,和阻塞态                                                      多道技术会在进程执行时间过程或遇到io时自动切换换其他进程,意味着io操作与进程被剥夺执行都会造成进程无法继续执行                                                                           join函数  :调用start函数后的操作就由操作系统来玩了,至于何时开启进程,进程何时执行,何时结束都与应用程序无关,所以当前程序会继续往下执行,join函数就可以是父进程等待子进程结束后继续执行   

from multiprocessing import Process
import time,random

x=1000

def task(n):
print('%s is runing' %n)
time.sleep(n)

if __name__ == '__main__':
start_time=time.time()

p1=Process(target=task,args=(1,))
p2=Process(target=task,args=(2,))
p3=Process(target=task,args=(3,))
p1.start()
p2.start()
p3.start()

p3.join() #3s
p1.join()
p2.join()

print('主',(time.time() - start_time))

start_time=time.time()
p_l=[]
for i in range(1,4):
p=Process(target=task,args=(i,))
p_l.append(p)
p.start()
for p in p_l:
p.join()

print('主',(time.time() - start_time))

                                                                       

 

转载于:https://www.cnblogs.com/tangda/p/10490546.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值