多任务——进程

进程

进程&线程


PID进程标识

操作系统为管理多个进程,为每个进程编号

  • os.getpid()——获取当前进程号
  • os.getppid()——获取当前进程的父进程pid


创建进程

  import multiprocessing
  进程名 = multiprocessing.Process(参数1,参数2,参数3)

参数1: target = 函数名,标识进程运行的函数

参数2: args (元组接收位置参数)

参数3: kwargs (字典接收关键字参数)


进程相关函数

  • 启动进程

  进程名.start()

  • 阻塞等待子进程执行完成

  进程名.join(参数1)

参数1:表示阻塞等待的秒数


  • 判断进程状态

  进程名.is_alive()

返回值 :True/False


  • 终止子进程

  进程名.terminate()

此时会有延迟,因为是操作系统终止该进程


孤儿进程&僵死进程

  • 孤儿进程:子进程还在运行,父进程已经退出,父进程会被转移为init
  • 僵死进程:子进程已经退出,父进程没有回收子进程的资源


多进程的执行是无序的

多进程不能共享全局变量

  • 进程间是独立的数据空间
  • 进程是操作系统进行资源分配的基本单位


进程的三种状态

进程池

1.进程池的分类

  • 工作进程——执行用户任务
  • 控制进程——接收任务、分配任务、维护工作进程

2.创建进程池

  from multiprocessing import Pool
  pool = Pool(最大进程数)


3.创建进程池间通信

  import multiprocessing
  queue = multiprocessing.Manager().Queue()


4.两种添加任务的方式

  •   pool.apply()——添加任务到进程池,阻塞等待任务执行完成
  •   pool.apply_async()——添加任务到进程池,不等待任务完成直接向下执行


5.阻塞等待任务完成

  pool.join()


6.关闭进程池,不再接收新任务

  pool.close()


7.终止进程池

  pool.terminate()



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值