进程是资源分配的基本单元,进程包括资源和数据。而线程只有数据。他也能完成多任务。
使用方法:导入multiprocessing中的Process类。
import multiprocessing
创建对象
p=multiprocessing.Process (target=函数引用,args=(参数1,参数2))
开启进程
p.start()
进程间不能共享数据,要想共享数据,需要使用消息队列。Queue
使用方法:from multiprocessing import Queue
创建消息队列对象q =Queue(3) 3表示最多可接收三条数据
存放数据 q.put(‘数据’)
取出数据 q.get()
使用put和get,程序执行完会阻塞,put_nowait()和get_nowait(),程序不会阻塞,会报错。
进程池Pool。当需要创建的进程数量较大时,需要使用到进程池。可以指定进程池接收的最大进程数,当进程池没有满的时候,会不断接收进程,当进程池装满的时候,别的进程会进入等待状态,直到进程池里面的某个进程执行结束才会进入到进程池中执行。
使用方法:导入模块from multiprocessing import Pool
创建进程池对象po = Pool(3) 3表示进程池能最大接收3个进程
开启进程池 po.apply_async(函数引用,(参数,))
关闭进程池 po.close()
主进程等待进程池中所有进程执行结束 po.join()
进程池中的消息队列 Queue,配合进程池一起使用
使用方法:from multiprocessing import Manager, Pool
创建进程池消息队列对象 q = Manager().Queue()
网友评论