队列
2018-06-18 02:07:52来源:未知 阅读 ()
(1)简单的队列:
import queue #线程queue q = queue.Queue() q.put('a') q.put('b') q.put('c') q.put('d') q.put('e') print(q.qsize( )) print(q.get()) print(q.qsize( ))
(2)多个进程(主进程和子进程)之间相互传递数据,但是不共享数据:
from multiprocessing import Queue,Process '''多个进程(主进程和子进程)相互传递数据,但是不共享数据''' def f(qq): qq.put('你好') if __name__ == '__main__': q = Queue() p = Process(target=f,args=(q,)) #起一个子进程 p.start() print('>>',q.get()) p.join()
(3)
管道的方式 多个进程(主进程和子进程)之间相互传递数据,但是不共享数据:
from multiprocessing import Process,Pipe #(Pipe() 管道) def child(conn): conn.send('hello world!') conn.send('hello world too!') print('儿子收到父亲来电:',conn.recv()) conn.close() if __name__ == '__main__': father_conn,child_conn = Pipe() #管道有两端,一端父亲一端儿子 father_conn.send('儿砸') p = Process(target=child,args=(child_conn,)) #把儿子传给子进程,父亲是主进程 p.start() print('父亲收到儿子来电:',father_conn.recv()) print('父亲收到儿子来电:',father_conn.recv()) p.join()
(4)多个进程(主进程和子进程)之间真正的数据共享:
from multiprocessing import Process,Manager import os def f(d,l): d[os.getpid()] = os.getpid() #将进程号当作 key 和value传到字典里边 l.append(os.getppid()) print(l) if __name__ == '__main__': with Manager() as manager: d = manager.dict() #生成一个字典,可在多个进程之间贡献 l = manager.list(range(3)) #生成一个列表,事先存有5个元素,可在多个进程间共享 p_list = [] #存放每个进程 for i in range(10): p = Process(target=f,args=(d,l)) #启动子进程 p.start() p_list.append(p) for res in p_list: #等待结果 res.join() print(d) print(l)
(5)进程锁 用法和线程锁基本一样:
from multiprocessing import Process,Lock def f(l,i): l.acquire() print('hello world',i) l.release() if __name__ == '__main__': l = Lock() #进程锁需要将锁传进去 for i in range(10): p = Process(target=f,args=(l,i,)) p.start()
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python爬虫学习之用Python抢火车票的简单小程序 2019-08-13
- 用python写一个简单的文件上传 2019-07-24
- concurrent.futures模块简单介绍(线程池,进程池) 2019-07-24
- ORM 2019-07-24
- celery 分布式异步任务框架(celery简单使用、celery多任务结 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash