香港云主机最佳企业级服务商!

ADSL拨号VPS包含了中国大陆(联通,移动,电信,)

中国香港,国外拨号VPS。

当前位置:云主机 > python >

电信ADSL拨号VPS
联通ADSL拨号VPS
移动ADSL拨号VPS

Python3.5多进程原理与用法实例分析


时间:2022-04-02 10:27 作者:admin


本文实例讲述了python/' target='_blank'>python3.5多进程原理与用法。分享给大家供大家参考,具体如下:

进程类:Process

示例及代码:

(1)创建函数作为单进程

#!/usr/bin/env Python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport multiprocessingimport time#创建函数并将其作为单个进程def worker(interval):  n = 5    #进程数  while n>0:    print("The time is :{0}".format(time.ctime()))   #初始化时间    time.sleep(interval)    #睡眠时间    n-=1if __name__ == "__main__":  # 创建进程,target:调用对象,args:传参数到对象  p = multiprocessing.Process(target=worker,args=(2,))  p.start()    #开启进程  print("进程号:",p.pid)  print("进程别名:",p.name)  print("进程存活状态:",p.is_alive())

运行结果:

进程号: 6784
进程别名: Process-1
进程存活状态: True
The time is :Wed Nov 1 10:59:03 2017
The time is :Wed Nov 1 10:59:05 2017
The time is :Wed Nov 1 10:59:07 2017
The time is :Wed Nov 1 10:59:09 2017
The time is :Wed Nov 1 10:59:11 2017

(2)创建函数作为多进程

#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport multiprocessingimport time#创建函数作为多进程def work1(interval):  print("work1...")  time.sleep(interval)  print("end work1...")def work2(interval):  print("work2...")  time.sleep(interval)  print("end work2...")def work3(interval):  print("work3...")  time.sleep(interval)  print("end work3...")if __name__ == "__main__":  p1 = multiprocessing.Process(target=work1,args=(1,))  p2 = multiprocessing.Process(target=work2,args=(2,))  p3 = multiprocessing.Process(target=work3,args=(3,))  p1.start()  p2.start()  p3.start()  print("The number of CPU is %d:"%(multiprocessing.cpu_count()))   #打印CPU核数  for p in multiprocessing.active_children():     #循环打印子进程的名称和pid    print("子进程名称:%s,子进程pid:%d" %(p.name,p.pid))  print("ending....")

运行结果:

The number of CPU is 4:
子进程名称:Process-2,子进程pid:7108
子进程名称:Process-1,子进程pid:1896
子进程名称:Process-3,子进程pid:7952
ending....
work3...
work1...
work2...
end work1...
end work2...
end work3...

注:先运行主进程的内容,再运行子进程

(3)将进程定义成一个类

#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport multiprocessingimport time#将进程定义为一个类class ClockProcess(multiprocessing.Process):  def __init__(self,interval):    multiprocessing.Process.__init__(self)   #重构了Process类里面的构造函数    self.interval = interval  def run(self):     #固定用run方法,启动进程自动调用run方法    n = 5    while n>0:      print("The time is {0}".format(time.ctime()))      time.sleep(self.interval)      n-=1if __name__ == "__main__":  p = ClockProcess(2)  p.start()

运行结果:

The time is Wed Nov 1 11:31:28 2017
The time is Wed Nov 1 11:31:30 2017
The time is Wed Nov 1 11:31:32 2017
The time is Wed Nov 1 11:31:34 2017
The time is Wed Nov 1 11:31:36 2017

(4)Queue(队列)实现多进程数据传输

#!/usr/bin/env python# -*- coding:utf-8 -*-# Author:ZhengzhengLiuimport multiprocessing#Queue是多进程安全的队列,可以使用实现多进程之间的数据传递def writer_proc(q):  try:    q.put(1,block=False)    #put方法插入数据到队列中  except:    passdef reader_proc(q):  try:    print(q.get(block=False))    #get方法从队列中读取并删除一个元素  except:    passif __name__ == "__main__":  q = multiprocessing.Queue()  writer = multiprocessing.Process(target=writer_proc,args=(q,))  writer.start()  reader = multiprocessing.Process(target=reader_proc,args=(q,))  reader.start()  reader.join()  writer.join()

运行结果:

1

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python+mysql/' target='_blank'>mysql数据库程序设计入门教程》及《Python常见数据库操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

(责任编辑:admin)






帮助中心
会员注册
找回密码
新闻中心
快捷通道
域名登录面板
虚机登录面板
云主机登录面板
关于我们
关于我们
联系我们
联系方式

售前咨询:17830004266(重庆移动)

企业QQ:383546523

《中华人民共和国工业和信息化部》 编号:ICP备00012341号

Copyright © 2002 -2018 香港云主机 版权所有
声明:香港云主机品牌标志、品牌吉祥物均已注册商标,版权所有,窃用必究

云官方微信

在线客服

  • 企业QQ: 点击这里给我发消息
  • 技术支持:383546523

  • 公司总台电话:17830004266(重庆移动)
  • 售前咨询热线:17830004266(重庆移动)