并行(多进程)-python
1、进程创建
2、当前进程信息
使用current_process可获得当前进程的信息:
(1)引入:from multiprocessing import current_process
(2)获取信息:
proc = current_process() # 当前进程对象 print proc.name # 进程名字 print proc.pid # 进程号
3、进程状态及控制
4、queue
所属模块:multiprocessing.Queue
(1)模块引入:from multiprocessing import Queue
(2)API:
q = Queue()
q.qsize():
q.empty():
q.full():
q.put():
q.put_nowait():
q.get():
q.get_nowait():
q.close():
join_thread():
cancel_join_thread():
4.1 简化版本
所属模块:multiprocessing.queues.SimpleQueue
只有三个方法:empty(),get(), put()
4.2 加强版本
所属模块:multiprocessing.JoinableQueue
新增两个方法: task_done() ,join()
5、pipe
6、锁
7、进程间共享
Pipe、Queue 都有一定数据共享的功能,但是他们会堵塞进程
8、进程池
9、注意事项
(1)Lock、Pipe、Queue 和 Pipe 需要注意的是:尽量避免使用 Process.terminate 来终止程序,否则将会导致很多问题。
(2)multiprocessing提供了threading包中没有的IPC(比如Pipe和Queue),效率上更高。应优先考虑Pipe和Queue,避免使用Lock/Event/Semaphore/Condition等同步方式 (因为它们占据的不是用户进程的资源)。