首页 > 编程语言 > 详细

Python 多进程编程

时间:2021-09-09 05:36:52      阅读:39      评论:0      收藏:0      [点我收藏+]

总的来说与多线程的实现方式几乎一致. 不同的点在于多进程间的变量通信

from multiprocessing import Process
import time
import os


class MyProcess(Process):
    def __init__(self):
        super().__init__()

    def run(self):  # 实现自己的Process类时, 需要重写Process方法
        print(f"启动子进程. pid: {os.getpid()}")
        time.sleep(10)
        print(f"结束子进程. pid: {os.getpid()}")


def f():
    print(f"启动子进程. pid: {os.getpid()}")
    time.sleep(10)
    print(f"结束子进程. pid: {os.getpid()}")


if __name__ == "__main__":
    ps = []

    # 实现多进程的第一种方式, 继承Process类, 重写run方法. -- MyProcess
    for i in range(1, 11):
        ps.append(MyProcess())

    # 实现多进程的第二种方式, target指定f函数
    for i in range(1, 11):
        ps.append(Process(target=f))

    for p in ps:
        p.start() # 启动子进程

    for p in ps:
        p.join()  # 阻塞主进程直到子进程结束为止

    print("end")

在多个进程间共享数据

from multiprocessing import Process, Queue
import time
import os


def f(q):
    print(f"启动子进程. pid: {os.getpid()}")
    time.sleep(1)
    q.put(q.get() + 1)
    print(f"结束子进程. pid: {os.getpid()}")


if __name__ == "__main__":
    ps = []
    q = Queue()  # 实例化队列 Queue
    q.put(0)  # 将 0 放入初始数据

    for i in range(1, 11):
        ps.append(Process(target=f, args=(q,)))

    for p in ps:
        p.start()  # 启动子进程

    for p in ps:
        p.join()  # 阻塞主进程直到子进程结束为止

    print(q.get())
    print("end")

Python 多进程编程

原文:https://www.cnblogs.com/gopher-zero/p/15240854.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!