码迷,mamicode.com
首页 > 其他好文 > 详细

并发编程

时间:2018-12-28 16:03:01      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:cmd   指定   方法   分享图片   line   方式   图片   tar   共享   

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

 

并发编程

标签:cmd   指定   方法   分享图片   line   方式   图片   tar   共享   

原文地址:https://www.cnblogs.com/yangyufeng/p/10190909.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!