python之multiprocessing模块创建进程和多进程

"""
multiprocessing模块创建进程
    1.将需要子进程执行的事件封装成函数
    2.通过模块Process类创建进程对象,关联函数
    3.可以通过进程对象设置进程信息及属性
    4.通过进程对象调用start启动进程
    5.通过进程对象调用join回收进程
Process(target=fun,args=(1,2),kwargs={name:val},name=“测试”)
获取进程名:p.name  获取进程pid:p.pid   查看进程是否在生命周期内(p.start之前之后都可以):p.is_alive()
设置父子进程的退出关系(必须在p.start前设置):p.daemon=Ture
"""
import multiprocessing as mp

a = 1


# 时间函数
def fun(num):
    for item in range(num):
        print("hello world")
        global a
        print("child a=", a)
        # 自己空间中的变量和父类中的a互不影响
        a = 100


def main():
    # 创建进程对象
    p = mp.Process(target=fun, args=(3,), name="大刀王五")
    # 守护进程,父进程退出,子进程也跟着退出
    p.daemon = True
    # 启动进程
    p.start()
    # 获取进程名
    print("Name:", p.name)
    # 获取子进程的pid
    print("pid", p.pid)
    # 查看子进程的生命状态
    print("状态", p.is_alive())
    # # 回收进程
    p.join()


"""
相当于
pid = os.fork()
if pid == 0:
    fun(3)
else:
    os.wait()
"""
if __name__ == "__main__":
    main()
    
"""
===================================================================
multiprocessing创建多进程
"""
from multiprocessing import Process
import os


def fun1():
    print("吃")
    print(os.getppid(), "--", os.getpid())


def fun2():
    print("喝")
    print(os.getppid(), "--", os.getpid())


def fun3():
    print("拉")
    print(os.getppid(), "--", os.getpid())


thing = [fun1, fun2, fun3]
dic = []


def proc():
    for item in thing:
        # 创建进程对象并关联函数
        p = Process(target=item)
        # 将创建的进程对象添加到列表中
        dic.append(p)
        # 启动进程
        p.start()
    for item in dic:
        item.join()


if __name__ == "__main__":
    proc()

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值