问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Python多进程系列之Queue类

发布网友 发布时间:2024-09-26 22:06

我来回答

1个回答

热心网友 时间:2024-10-21 17:07

在使用多进程的过程中,最好不要使用共享资源。普通的全局变量是不能被子进程所共享的,只有通过multiprocessing组件构造的数据结构可以被共享。

Queue是用来创建进程间资源共享的队列的类,使用Queue可以达到多进程间数据传递的功能。但是Queue只能在Process类中使用,不能再Pool类中使用。

1.基本介绍1.1 构造方法

Queue([maxsize])

maxsize是队列中允许最大项数,省略则为无限大队列

1.2 实例方法

put():用来在队列中插入数据。该方法有2个可选参数:blocked和timeout。若blocked的值为True(默认值)且timeout的值大于0,该方法会阻塞timeout的时间,直到该队列有剩余的空间。超时抛出Queue.Full异常。若blocked的值为False,且Queue已满,则会立即抛出Queue.Full异常

get():从队列获取一个元素并且删除该元素,类似于列表的pop()方法。该方法也有2个可选参数:blocked和timeout。若blocked的值为True(默认值)且timeout的值大于0,会在timeout的时间内没有获取到抛出Queue.Empty异常。若blocked的值为False,且队列有一个元素可用,则返回该元素。若blocked的值为False,且队列为空则抛出Queue.Empty异常。设置blocked的值为True或者参数全部置空可以防止Queue在empty的时候抛出异常。

put_nowait():同put(blcoked=False)

get_nowait():同get(blcoked=False)

empty():判断队列是否为空。但是该方法在队列为空返回True时不可靠,比如返回True时put()方法插入了新的数据。

full():判断队列是否已满,该方法也不可靠,比如返回True时get()方法取走了数据。

qsize():返回队列中目前元素的数量,也不可靠,原因同empty()和full()

2.使用示例frommultiprocessingimportQueue,Processimportosimporttimeimportrandomdefwrite(q):print(f'Processtowrite:{os.getpid()}')forvalueinrange(5):print(f'put{value}toqueue......')q.put(value)time.sleep(random.random())defread(q):print(f'Processtoread:{os.getpid()}')whileTrue:value=q.get(True)print(f'get{value}fromqueue......')if__name__=='__main__':q=Queue()pw=Process(target=write,args=(q,))pr=Process(target=read,args=(q,))pw.start()pr.start()pw.join()pr.terminate()

result:

Processtowrite:2856put0toqueue......Processtoread:17560get0fromqueue......put1toqueue......get1fromqueue......put2toqueue......get2fromqueue......put3toqueue......get3fromqueue......put4toqueue......get4fromqueue......
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
杭州皮衣修理哪里更专业? 天津才梓教育科技有限公司怎么样? 2006年天津教师资格证何时报名?在哪报名? 高考填志愿怎么查学校专业代码 高考志愿填报代码查询 专科志愿填报代码如何查询 精挑细选(找出不是同一类的词语,用你喜欢的标志画出)。 1.龙凤呈祥 叶... 找出不同类的词。 慧眼识真。(找出不同类的词语并写在横线上) 1.勇敢 沉着 狡猾 ... 诚实,勇敢,善良,狡猾,乐于助人找出不同类 线性数据结构有哪些 小说素材教学:感官描写(温暖) 银行卡丢失(银行卡是外地卡不支持本地补卡)网银证书到期卡里的钱取不... 银行卡在外地办的,在家乡给掉了,需要去外地去补卡么?可以不用去外地就... 电话卡坏了然后人在内地卡是外地的去营业厅了它说不能补办这是怎么回事... 几个我不动的WOW术语 东莞市味动力商贸有限公司怎么样? 小白问题,我的WOW该怎么赚钱?好的追分 WOW新手小白求问~求老玩家解答 广东文一朝阳集团有限公司企业简介 WOW里面SW的G团喊得一些话看不懂。我完全小白。看补充说明。求解... 一个微信号可以同时登陆钉钉和腾讯会议吗? WOW小白提问题! 72连续减9:72,63,有哪4个数? 2024长春成人高起本怎么报名 3个月涨粉20万,一篇笔记报价16万,这个小红书博主的内容太牛了!我好... 大暑诗词名句摘抄(大暑经典著名诗句) 关于夏天的七言绝句古诗(透散着清凉之意的古诗句) 小红书怎么申诉通过率高?? 用现代语言描述古诗所见 专科可以考研吗 专科可不可以考研 观牡丹花_作文 请告诉我最近南京马六事件的结果 南京马6党事件导致我都不想买马6了 马六围悍马”事件 是如何拍下来的??? 姜晓舟处理结果 梦见自己拉屎吃屎是什么预兆,梦见自己吃了一口屎 做梦梦到见自己拉在坐便里的屎让一个男人拿出来品尝是什么意思?_百度... 作文“我喜欢---”描写植物 求<那年夏天,宁静的海>这部电影简介 那年夏天宁静的海电影介绍 一对水桶是几个水桶 结婚女方要买几个子孙桶子孙桶买一对还是一个 红烧鱼皮营养成分 红烧鱼皮制作工艺 红烧鱼皮食谱营养 还有七天就中考了,这几天能不能喝咖啡? 中考的时候早上可以喝COFFEE吗? 我快中考了,每周喝2次咖啡提神没问题吧 2023年1月放假日历表 2023年1月法定节假日几天