并发编程

1.什么是并发编程?

并发编程就是可以同时处理多个任务

2.并发的基石是 多道技术

什么是多道技术?

多道技术中的多道指的是多个程序,多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题,解决方式即多路复用,多路复用分为时间上的复用和空间上的复用.

空间复用:

同一时间,内存中存储了多个应用程序

不同应用程序之间的内存是相互独立的

时间复用:

当一个程序遇到IO操作时,会自动切换到其他应用程序,以此来提高CPU的利用率

3.并发与并行

什么是并发?

并发就是多个事件同时发生,也称之为伪并行

什么是并行?

并行就是多个事件同时进行

4.两种使用进程的方式
1.直接创建process对象,指定target对象
1 from multiprocessing import Process
2 3 def task():
4     print('this is 子进程')
5 6 if __name__ == '__main__':
7     p = Process(target=task)
View Code
2.继承process 覆盖run方法
 1 class MyProcess(Process):
 2  3     def __init__(self,url):
 4         self.url = url
 5         super().__init__()
 6  7     def run(self):
 8         print('文件下载地址',self.url)
 9 10 if __name__ == '__main__':
11     p = MyProcess('www.baidu.com')
12     p.start()
View Code
3.process的用法

p.start() 调用系统,启动子进程

p.terminate() 终止当前进程

p.daemon() 守护进程

5.join函数

join函数的作用是提高优先级,使父进程等待子进程结束

from multiprocessing import Process
import time
​
def task(num):
    print('这是%s号进程' % num)
    time.sleep(2)
    
if __name__ == '__main__':
    start_time = time.time()
    ps = []
    for i in range(5):
        p = Process(target=task,args=(i,))
        p.start()
        ps.append(p)
​
    for p in ps:
        p.join()
​
    print(time.time() - start_time)
​
    print('over')
View Code

6.孤儿进程与僵尸进程

孤儿进程

孤儿进程是指父进程已经终止,但是子进程还在运行

孤儿进程是无害的,会总动过继给操作系统,由操作系统进行资源回收

僵尸进程

僵尸进程是指子进程执行完成所有任务,已经终止.但是还残留一些信息(进程ID 进程名称)

父进程没有去处理这些残留信息,导致残留信息会占用系统资源,

僵尸进程是有害的

当出现大量的僵尸进程时 会占用系统资源 可以把它父进程杀掉 僵尸就成了孤儿 操作系统会

负责回收数据

 1 import  time
 2 from multiprocessing import  Process
 3  4 def task1():
 5     print("子进程 run")
 6  7 if __name__ == '__main__':
 8     for i in range(10):
 9         p = Process(target=task1)
10         p.start()
11 12     time.sleep(100000)
13 14 # 可以通过cmd 命令窗口使用taskkill + 进程ID的方式结束父进程
15 # 也可以通过任务管理器结束父进程
View Code
学习,学习,学习! 学习是为了更好的未来,不要让别人瞧不起你,加油!!!
原文地址:https://www.cnblogs.com/yangyufeng/p/10190909.html