Python3.5——多进程
来源:互联网 发布:奥拉星拥有全知之眼 编辑:程序博客网 时间:2024/06/10 17:01
进程类: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进程存活状态: TrueThe time is :Wed Nov 1 10:59:03 2017The time is :Wed Nov 1 10:59:05 2017The time is :Wed Nov 1 10:59:07 2017The time is :Wed Nov 1 10:59:09 2017The 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:7952ending....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 2017The time is Wed Nov 1 11:31:30 2017The time is Wed Nov 1 11:31:32 2017The time is Wed Nov 1 11:31:34 2017The 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
阅读全文
0 0
- Python3.5——多进程
- Python3 ——多进程
- python3多进程实现
- python3 多进程
- Python3多进程学习
- python3 学习笔记 多进程 multiprocessing 模块
- Python3.5——递归
- 廖雪峰《python3 基础教程》读书笔记——第十二章 进程和线程
- python3 语法之多进程
- Python3之进程、线程
- python3.5——pip升级
- Python3.5——字典的使用
- Python3.5——字符串常用操作
- Python3.5——集合及其运算
- Python3.5——文件修改详解
- Python3.5——面向对象编程
- Python3.5——运算符
- python3.5——matplotlib模块使用
- Linux成长之路
- Python爬虫入门:Cookie的使用
- 智能指针管理通过new创建的对象
- mybatis初步学习
- 工具
- Python3.5——多进程
- Java基础Day07--面向对象
- 简单粗暴JavaWeb-第三篇:通过controller实现页面跳转
- 【项目4-字符串加密】
- HttpClient androidStudio中的基础使用
- 文章标题
- 【蓝桥杯】【第一个数字】
- Http协议的Delete和Put方法是做什么的?怎么用?
- HBase的NoSuchMethodError:org.apache.hadoop.net.NetUtils.getInputStream异常解决办法