多进程(1)

 1 # 概念
 2 # 进程是程序在计算机上的一次执行活动。
 3 # 当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。
 4 # 进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;
 5 # 用户进程就不必我多讲了吧,所有由你启动的进程都是用户进程。进程是操作系统进行资源分配的单位。
 6 # 它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),
 7 # 这样用户根本感觉不出来CPU是在轮流为多个进程服务,就好象所有的进程都在不间断地运行一样。但实际上在任何一个时间内有且仅有一个进程占有CPU。
 8 #
 9 # 多进程和多线程的区别:
10 # 多线程使用的是cpu的一个核,适合io密集型
11 # 多进程使用的是cpu的多个核,适合运算密集型
12 # 组件
13 # Python提供了非常好用的多进程包,multiprocessing,我们在使用的时候,只需要导入该模块就可以了。
14 # Multiprocessing支持子进程,通信,共享数据,执行不同形式的同步,提供了Process,Pipe, Lock等组件
15 # 多进程和多线程的区别:
16 # 多线程使用的是cpu的一个核,适合io密集型
17 # 多进程使用的是cpu的多个核,适合运算密集型
18 # 组件
19 # Python提供了非常好用的多进程包,multiprocessing,我们在使用的时候,只需要导入该模块就可以了。
20 # Multiprocessing支持子进程,通信,共享数据,执行不同形式的同步,提供了Process,Pipe, Lock等组件
21 #
22 #
23 # 创建进程的类
24 # Process([group [, target [, name [, args [, kwargs]]]]]),由该类实例化得到的对象,表示一个子进程中的任务(尚未启动)
25 #
26 # 参数介绍
27 # group参数未使用,值始终为None
28 # target表示调用对象,即子进程要执行的任务
29 # args表示调用对象的位置参数元组,args=(1,2,'egon',)
30 # kwargs表示调用对象的字典,kwargs={'name':'egon','age':18}
31 # name为子进程的名称
32 #
33 # 方法介绍
34 # p.start():启动进程,并调用该子进程中的p.run()
35 # p.run():进程启动时运行的方法,正是它去调用target指定的函数,我们自定义类的类中一定要实现该方法
36 # p.terminate():强制终止进程p,不会进行任何清理操作,如果p创建了子进程,该子进程就成了僵尸进程,使用该方法需要特别小心这种情况。
37 # 如果p还保存了一个锁那么也将不会被释放,进而导致死锁
38 # p.is_alive():如果p仍然运行,返回True
39 # p.join([timeout]):主线程等待p终止(强调:是主线程处于等的状态,而p是处于运行的状态)。
40 # timeout是可选的超时时间,需要强调的是,p.join只能join住start开启的进程,而不能join住run开启的进程
41 #
42 #
43 # 进程属性
44 # p.daemon:默认值为False,如果设为True,代表p为后台运行的守护进程,当p的父进程终止时,
45 # p也随之终止,并且设定为True后,p不能创建自己的新进程,必须在p.start()之前设置
46 # p.name:进程的名称
47 # p.pid:进程的pid
48 
49 import multiprocessing
50 import time
51 
52 def work(interval, method):
53     print("start work_" + method)
54     time.sleep(interval)
55     print("end work_" + method)
56 if __name__ == "__main__":
57     p1 = multiprocessing.Process(target=work, args=(1, "1"))
58     p2 = multiprocessing.Process(target=work, args=(2, "2"))
59     p3 = multiprocessing.Process(target=work, args=(3, "3"))
60 
61     p1.start()
62     p2.start()
63     p3.start()
64     print("The number of CPU is:") + str(multiprocessing.cpu_count())
65     for p in multiprocessing.active_children():
66         print("The name of active child is: " + p.name + ", pid is: " + str(p.pid) + "is alive: " + str(p.is_alive()))
67     print("MAIN IS END!")
68     

 

posted @ 2017-12-09 09:55  依哈  阅读(128)  评论(0编辑  收藏  举报