Python基于进程的并发编程
来源:互联网 发布:abp zero 源码 下载 编辑:程序博客网 时间:2024/06/06 05:14
from multiprocessing import Process, Pipe, Queueimport osfrom time import sleep, ctime"""在multiprocessing库里面,是通过创建Process对象并调用start()方法来创建进程。同threading.Thread具有相同的方法。比如:run(), start(), join()"""def f(name): info("函数F开始运行的地方。。。。。") for i in range(5): print("......hello", name) sleep(1)# 打印进程信息def info(title): print(title) print("模块名称 :", __name__) if hasattr(os, 'getppid'): print("父进程 :", os.getppid(), "子进程:", os.getpid()) else: print("父进程 :未知, 子进程:", os.getpid())#pipe的使用""" Pipe()返回两个连接对象,代表Pipe的两端 这两个连接对象都有send()和recv()方法。 Pipe是不线程安全的, 如果两个及以上的线程同时从Pipe的一端进行读写,则Pipe的数据可能遭到破坏。 """def process1(conn): for i in range(10): conn.send('进程1发送的第%d条数据' %(i+1)) # 发送数据。 print("进程1接收到的数据:", conn.recv()) sleep(0.5)def process2(conn): for i in range(10): conn.send('进程2发送的第%d条数据' %(i+1)) # 发送数据。 print("进程2接收到的数据:", conn.recv()) sleep(0.5)#Queue的使用"""Queue几乎是queue.Queue的克隆版本Queue是线程和进程安全的。"""def procQueue1(q): for i in range(10): q.put('进程1发送的第%d条数据' % (i + 1)) # 发送数据。 sleep(0.5)def procQueue2(q): for i in range(20): q.put('进程2发送的第%d条数据' % (i + 1)) # 发送数据。 sleep(0.5)def procQueue3(q): print("。。。先显示5条数据") count = 0 for i in range(5): count = count + 1 print("进程3接收到的第%d条数据:" %(count),q.get()) sleep(0.5) print("。。。剩余的数据全部显示完以后就退出") while not q.empty(): count = count + 1 print("进程3接收到的第%d条数据:" % (count), q.get()) sleep(0.5)if __name__ == '__main__': p = Process(target=f, args=('Bob',), kwargs={}) p.start() p.join() print("。。。。。。开始管道Pipe的测试。。。。。。") parentConn, childConn = Pipe() p1 = Process(target=process1, args=(parentConn, )) p2 = Process(target=process2, args=(childConn, )) p1.start() p2.start() p1.join() p2.join() print("。。。。。。Pipe管道测试完毕。。。。。。") print() print("。。。。。。开始队列Queue的测试。。。。。。") q = Queue() p1 = Process(target=procQueue1, args=(q,)) p2 = Process(target=procQueue2, args=(q,)) p3 = Process(target=procQueue3, args=(q,)) p1.start() p2.start() p3.start() p1.join() p2.join() p3.join() print("。。。。。。队列Queue的测试完毕。。。。。。")
阅读全文
0 0
- Python基于进程的并发编程
- 基于进程的并发编程
- 并发编程01-基于进程的并发编程
- Python基于线程的并发编程
- python多进程并发编程
- 基于PCNTL的PHP多进程并发编程
- python基于tornade的高并发接口编程实战学习
- 多进程并发编程----基于高级的预先创建进程池(accept不上锁)的模型
- 多进程并发编程----基于高级的动态创建进程池的模型
- Python的并发编程
- Python并发编程(1)--进程
- 理解python并发编程-进程篇
- 多进程并发编程----基于高级的预先创建进程池(accept使用文件上锁)的模型
- 多进程并发编程----基于高级的预先创建进程池(accept使用线程上锁)的模型
- 【并发编程】线程和进程的关系
- Java并发编程:线程、进程的创建
- python 并发编程(多进程、多线程、gevent)
- python并发编程之多进程、多线程、异步和协程详解
- SchemaTron入门一
- ContentProvider和ContentResolver的学习
- Qt无边框窗体移动和缩放
- 二进制中1的个数
- xshell5之ssh隧道连接
- Python基于进程的并发编程
- 云客Drupal8源码分析之配置系统Configuration(一)
- golang websocket 失败
- MVC三层框架详细解析
- jsonp的原理
- [乐意黎转载]Linux系统下如何配置SSH?如何开启SSH?
- arm-Linux-gcc交叉编译器和gcc编译器的下载地址
- BZOJ1207: [HNOI2004]打鼹鼠
- Flutter进阶—实现动画效果(七)