当前位置:首页>python>Python基础篇 - 多进程-进程的创建

Python基础篇 - 多进程-进程的创建

  • 2026-09-11 01:52:23
Python基础篇 - 多进程-进程的创建
多进程-进程的创建

在上次的文章Python基础篇 - 进程与线程、并发与并行中,我们认识了进程与线程的基本概念。今天的Python基础篇知识将介绍多进程的创建。 

一.基于multiprocessing模块创建多进程

multiprocessing模块是Python跨平台创建进程的最基础方法,通过实例化Process类,指定要执行的任务(函数/方法),调用start()方法即可启动进程,用法和后续的多线程Thread类高度相似。

# 演示Demo:演示文件的写、读两个进程的执行,实现边写边读import timeimport multiprocessing# 1.向文件中写入数据def write_file():    with open("test.txt", "a") as f:        n = 1        while True:            f.write(f"{n}\n")            f.flush()            n += 1            time.sleep(0.5)# 2.从文件中读取数据def read_file():    with open("test.txt", "r") as f:        while True:            time.sleep(0.1)            print(f.read(1))if __name__ == "__main__":    # 创建一个进程用于写文件    p1 = multiprocessing.Process(target=write_file)    # 创建一个进程用于读文件    p2 = multiprocessing.Process(target=read_file)    # 启动进程    p1.start()    # 启动进程    p2.start()

基于multiprocessing模块,我们创建了两个进程,实现了文件的边写边读,如果不创建两个进程的话,该程序将永远不会执行读取数据的函数,而是一直陷入在写入数据的while无限循环中。

  注意: 不写if__name__==“__main__”,Windows系统中,创建子进程时会重新导入当前模块,不写会导致无限创建进程,报错崩溃

二.基于自定义Process子类创建多进程

当然,我们还可以通过继承Process父类,实现一个子类,从而达到创建进程的目的。

# 演示Demo:自定义Process子类创建多进程from multiprocessing import Processimport osimport time# 自定义Process子类class MyProcess(Process):    def __init__(self, name):        super().__init__()        self.name = name  # 自定义参数,用于区分进程    # 重写run()方法,定义进程要执行的任务(方法)    def run(self):        # 演示下进程执行的逻辑,比如展示下pid,不同进程的id        print(f"自定义子类进程{self.name}启动,进程ID:{os.getpid()},父进程ID:{os.getppid()}")        # 模拟任务执行        time.sleep(0.2)        print(f"自定义子类进程{self.name}执行完毕")if __name__ == "__main__":    # 实例化自定义子类,创建子进程    p1 = MyProcess(name="子类进程1")    p2 = MyProcess(name="子类进程2")    # 启动两个进程(调用start(),自动执行run()方法)    # 启动进程    p1.start()    # 启动进程    p2.start()

总结:今日我们学习了Python基础篇-多进程-进程的创建。重点掌握基于multiprocessing模块的两种方式。一是直接实例化Process类,指定目标任务和参数,调用start()启动进程、join()等待结束,灵活简单,适合少量进程。二是自定义Process子类,继承该类并分别重写__init__(初始化参数,需调用父类初始化)和run()(定义任务方法),可灵活扩展进程功能。在Python基础篇,后续我们将持续学习Python基础知识,介绍各种算法,祝每一位study er学习愉快。

合集链接
这里是我滴合集内容链接,大家感兴趣就康康吧。
1. 人工智能进阶之路 - 机器学习篇
2. AI发展前点
3. 人工智能进阶之路-Python基础篇
4. 充电er的乱坠闲聊
5. Origin认知
点个 赞 你最好看

最新文章

随机文章