python 开启进程两种方法 multiprocessing模块 介绍
2020-12-13 02:13
标签:定制 thread 时间 main process类 控制 rgs run方法 发送 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu\_count\(\)查看),在python中大部分情况需要使用多进程。 Python提供了multiprocessing。 multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。 multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,>提供了Process、Queue、Pipe、Lock等组件。 需要再次强调的一点是:与线程不同,进程没有任何共享状态,进程修改的数据,改动仅限于该进程内。 创建并开启子进程的方式一 Process 传字典 或者args 传参数也可以 start()开启子进程 用关键字参数kwargs传参 应用程序是开不了子进程的 p.start() 给操作系统发送信号 至于操作系统什么时候开进程,开多长时间应用程序是控制不了。 p.start() 给操作系统发送信号 告诉操作系统给个开个子进程吧 操作系统收到后 申请内存空间 把父进程的地址空间数据 拷贝给子进程 作为子进程的初始状态 父进程不知道操作系统会 默认是先 开启主进程执行,主进程执行完,再开启 子进程执行,再到子进程执行结束。 创建并开启子进程的方式二 python 开启进程两种方法 multiprocessing模块 介绍 标签:定制 thread 时间 main process类 控制 rgs run方法 发送 原文地址:https://www.cnblogs.com/mingerlcm/p/8986623.html一 multiprocessing模块介绍
三 Process类的使用
from multiprocessing import Process
import time
def 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的
‘‘‘
from multiprocessing import Process
import time
def 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
‘‘‘
自己写一个子类去继承他 不用默认的类
方法一定要写run
from multiprocessing import Process
import 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("主")
文章标题:python 开启进程两种方法 multiprocessing模块 介绍
文章链接:http://soscw.com/essay/25136.html