python的多进程(第一篇)基本用法

1,什么是进程

  • 进程是系统资源分配的基本单位,每启动一个进程操作系统都需要为其分配运行资源
  • 通俗的来说,就是一个运行的程序或者软件
  • 一个进程至少有一个进程,一个进程至少有一个线程,多进程可以完成多任务

2,进程的状态

  • 工作中,任务数往往大于cpu的核数,即一定有一些任务正在执行,而另外一些任务在等待cpu进行执行,因此导致了有了不同的状态
  • 就绪态:运行的条件都已近满足,正在等cpu执行
  • 执行态:cpu正在执行其功能
  • 等待态:等待某些条件满足,例如一个程序sleep了,此时就处于等待状态了

3,进程的优缺点

  • 优点:可以用多核
  • 缺点:资源开销大

4,python怎么使用多进程

#导入线程模块
import multiprocessing
过程([group [,target [,name [,args [,kwargs]]]]])

组:指定进程组,目前只能使用无
目标:执行的目标任务名
名称:进程名字
ARGS:以元组方式给执行任务传参
kwargs:以字典方式给执行任务传参
过程创建的实例对象的常用方法:

启动():启动子进程实例(创建子进程)
加入([超时):是否等待子进程执行结束,或等待多少秒
终止():不管任务是否完成,立即终止子进程
过程创建的实例对象的常用属性:

名:当前进程的别名,默认为过程-N,N为从1开始递增的整数
PID:当前进程的PID(进程号)
  • 代码的实现
import multiprocessing
import time
import os

def work():
    # 查看当前进程
    current_process = multiprocessing.current_process()
    print("work:", current_process)
    # 获取当前进程的编号
    print("work进程编号:", current_process.pid, os.getpid())
    # 获取父进程的编号
    print("work父进程的编号:", os.getppid())
    for i in range(10):
        print("工作中....")
        time.sleep(0.2)
        # 扩展: 根据进程编号杀死对应的进程
        os.kill(os.getpid(), 9)


if __name__ == '__main__':

    # 查看当前进程
    current_process = multiprocessing.current_process()
    print("main:", current_process)
    # 获取当前进程的编号
    print("main进程的编号:", current_process.pid)

    # 创建子进程
    sub_process = multiprocessing.Process(target=work)
    # 启动进程
    sub_process.start()


    # 主进程执行打印信息操作
    for i in range(20):
        print("我在主进程中执行...")
        time.sleep(0.2)

小结

# 查看当前进程
current_process = multiprocessing.current_process()
print("main:", current_process)
# 获取当前进程的编号
print("main进程的编号:", current_process.pid)
# 获取父进程的编号
print("work父进程的编号:", os.getppid())
根据进程编号杀死对应的进程
os.kill(os.getpid(), 9)
  • 传参的方式和线程的方式是一样的,没有区别
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值