打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python 开启进程两种方法 multiprocessing模块 介绍

 

 

一 multiprocessing模块介绍

python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进程。

Python提供了multiprocessing。 multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。

multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,>提供了Process、Queue、Pipe、Lock等组件。

需要再次强调的一点是:与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进程内。

 

 

 

三 Process类的使用

创建并开启子进程的方式一

Process 传字典 或者args 传参数也可以

 

start()开启子进程

from multiprocessing import Processimport timedef task(name):    print("%s is running" % name)    time.sleep(3)    print("%s is done" % name)if __name__ == "__main__":    # 实例化    # args 为函数传参数    t = Process(target=task, args=("子进程1",))    # 开启子进程    t.start()   # 仅仅只是给操作系统发送一个信号 与平常print没有什么区别    print("主")'''主子进程1 is running子进程1 is done''''''看得出是先打印主 再开启子进程1的'''

 

 用关键字参数kwargs传参

from multiprocessing import Processimport timedef task(name):    print("%s is running" % name)    time.sleep(3)    print("%s is done" % name)if __name__ == "__main__":    # 实例化    # 也可以用kwargs 为函数传参数 以字典方式    t = Process(target=task, kwargs={'name': '子进程1'})    t.start()'''子进程1 is running子进程1 is done'''

 

应用程序是开不了子进程的 p.start() 给操作系统发送信号 至于操作系统什么时候开进程,开多长时间应用程序是控制不了。

 p.start() 给操作系统发送信号 告诉操作系统给个开个子进程吧  操作系统收到后 申请内存空间 把父进程的地址空间数据 拷贝给子进程

 作为子进程的初始状态

 

父进程不知道操作系统会

 

 

默认是先 开启主进程执行,主进程执行完,再开启 子进程执行,再到子进程执行结束。

 

创建并开启子进程的方式二

 

自己写一个子类去继承他 不用默认的类

方法一定要写run

 

 

from multiprocessing import Processimport time# 自己写一个子类去继承他 不用默认的类# Process的类传进去class MyProcess(Process):    # 重写了init方法 父类就被覆盖掉    def __init__(self, name):        # 重用父类 因为父类还有很多有用功能,继承父类        super().__init__()        self.name = name    # 方法一定要写run    def run(self):        print("%s is running" % self.name)        time.sleep(3)        print("%s is done" % self.name)if __name__ == "__main__":    # 实例化 直接用自己自定义的类开子进程    # args 为函数传参数    p = MyProcess("子进程1")    # 开启子进程    p.start()   # 仅仅只是给操作系统发送一个信号 与平常print没有什么区别    # p.start() 本质是调用run方法    print("主")

 

来源:http://www.icode9.com/content-3-250451.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
多进程
如何使用 Python 多处理模块
第52天:Python multiprocessing 模块
Python 多进程 multiprocessing.Pool类详解
一篇文章带你解析Python进程
python进程池和进程锁
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服