多任务-进程

进程是资源分配的基本单元,进程包括资源和数据。而线程只有数据。他也能完成多任务。

使用方法:导入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()

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容