{"rsdb":{"rid":"319336","subhead":"","postdate":"0","aid":"230840","fid":"87","uid":"1","topic":"1","content":"
\n

\u751f\u4ea7\u8005\u6d88\u8d39\u8005\u6a21\u578b<\/p> \n

\u3000\u3000\u4e3b\u8981\u7528\u4e8e\u89e3\u8026<\/p> \n

\n
from<\/span> multiprocessing import<\/span> Queue\r\n<\/span>#<\/span>\u961f\u5217\u662f\u5b89\u5168\u7684,\u4e0d\u7528\u52a0\u9501.<\/span>\r\nq = Queue(num)\r\nnum : \u961f\u5217\u7684\u6700\u5927\u957f\u5ea6\r\n\r\nq.get()<\/span>#<\/span>\u963b\u585e\u7b49\u5f85\u83b7\u53d6\u6570\u636e,\u5982\u679c\u6709\u6570\u636e\u76f4\u63a5\u83b7\u53d6,\u5982\u679c\u6ca1\u6709\u6570\u636e,\u963b\u585e\u7b49\u5f85<\/span>\r\nq.put()#<\/span>\u963b\u585e,\u5982\u679c\u53ef\u4ee5\u7ee7\u7eed\u5f80\u961f\u5217\u4e2d\u653e\u6570\u636e\u5c31\u76f4\u63a5\u653e,\u4e0d\u80fd\u653e\u5c31\u963b\u585e\u7b49\u5f85<\/span>\r\n\r\nq.get_nowait()<\/span>#<\/span>\u4e0d\u963b\u585e,\u5982\u679c\u6709\u6570\u636e\u5c31\u76f4\u63a5\u83b7\u53d6,\u6ca1\u6709\u6570\u636e\u5c31\u62a5\u9519<\/span>\r\nq.put_nowait()#<\/span>\u4e0d\u963b\u585e, \u5982\u679c\u80fd\u7ee7\u7eed\u5f80\u961f\u5217\u4e2d\u653e\u6570\u636e,\u5c31\u76f4\u63a5\u653e,\u4e0d\u80fd\u653e\u5c31\u62a5\u9519<\/span>\r\n\r\n\r\n\r\nq <\/span>= Queue(3)\r\nq.put(<\/span>1)\r\nq.put(<\/span>'<\/span>abc<\/span>'<\/span>)\r\nq.put([<\/span>4,5,6])\r\n<\/span>print<\/span>('<\/span>\u6b64\u65f6\u961f\u5217\u5df2\u4e0d\u80fd\u518d\u653e\u5165\u4e86<\/span>'<\/span>)\r\nq.put(<\/span>'<\/span>\u5475\u5475<\/span>'<\/span>)#<\/span>\u6b64\u5904\u963b\u585e\u7b49\u5f85\u7a7a\u4f4d\u7f6e\u653e\u5165<\/span>\r\n#<\/span>q.putnowait('\u5475\u5475')#\u961f\u5217\u5df2\u6ee1,\u4e0d\u518d\u7b49\u5f85,\u76f4\u63a5\u62a5\u9519<\/span>\r\nprint<\/span>('<\/span>\u6b64\u5904\u4e0d\u4f1a\u88ab\u6253\u5370<\/span>'<\/span>)

print(q.get())#\u5148\u8fdb\u5148\u51fa,\u5148\u53d6\u51fa 1<\/pre> \n
print(q.get())<\/pre> \n  
print(q.get())<\/pre> \n  
#print(q.get())#\u961f\u5217\u4e3a\u7a7a,\u53d6\u4e0d\u51fa\u4f1a\u963b\u585e\u7b49\u5f85\u65b0\u6570\u636e\u53d6\u51fa<\/pre> \n  
print(q.getnowait())#\u4e0d\u518d\u7b49\u5f85\u76f4\u63a5\u62a5\u9519<\/pre> \n <\/div> \n 

 <\/p> \n

\u3000\u3000\u501f\u52a9\u961f\u5217\u5b9e\u73b0\u751f\u4ea7\u8005\u6d88\u8d39\u8005\u6a21\u578b (\u961f\u5217(First In First Out \u7b80\u79f0 : FIFO) : \u5148\u8fdb\u5148\u51fa )<\/p> \n

\n
from<\/span> multiprocessing import<\/span> Queue ,Process\r\n\r\n<\/span>def<\/span> consumer(q,name):\r\n    <\/span>while<\/span> 1:\r\n        pro_info <\/span>= q.get()#<\/span>\u5982\u679c\u6d88\u8d39\u8005\u4e0d\u77e5\u9053\u751f\u4ea7\u8005\u505c\u6b62\u751f\u4ea7,\u5c06\u4f1a\u4e00\u76f4\u7b49\u5f85\u83b7\u53d6<\/span>\r\n        if<\/span> pro_info :\r\n            <\/span>print<\/span>('<\/span>%s\u62ff\u8d70\u4e86%s<\/span>'<\/span> % (name,pro_info))\r\n        <\/span>else<\/span>:#<\/span>\u5f53\u6536\u5230None\u65f6,\u7ed3\u675f\u83b7\u53d6,\u9000\u51fa\u7a0b\u5e8f<\/span>\r\n            break<\/span>\r\n\r\ndef<\/span> producer(q,product):\r\n    <\/span>for<\/span> i in<\/span> range(10):\r\n      pro_info <\/span>= product + '<\/span>\u7684\u6210\u54c1%s\u53f7<\/span>'<\/span> % str(i)\r\n      q.put(pro_info)\r\n    q.put(None)<\/span>#<\/span>\u751f\u4ea7\u8005\u505c\u6b62\u751f\u4ea7\u7684\u6807\u8bc6<\/span>\r\n\r\nif<\/span> __name__<\/span> == '<\/span>__main__<\/span>'<\/span> :\r\n    q <\/span>= Queue(5)#<\/span>\u89c4\u5b9a\u961f\u5217\u6700\u5927\u4e3a5<\/span>\r\n    pro = Process(target=producer, args=(q,'<\/span>\u7248\u672c\u4e00<\/span>'<\/span>))\r\n    con <\/span>= Process(target=consumer, args=(q,'<\/span>\u5c0f\u6f58<\/span>'<\/span>))\r\n    pro.start()\r\n    con.start()\r\n\r\n\r\n\r\n<\/span>#<\/span>\u628a\u6210\u4ea7\u8868\u793a\u7b26\u653e\u5165\u7236\u8fdb\u7a0b<\/span>\r\nfrom<\/span> multiprocessing import<\/span> Queue ,Process\r\n\r\n<\/span>def<\/span> consumer(q,name):\r\n    <\/span>while<\/span> 1:\r\n        pro_info <\/span>= q.get()#<\/span>\u5982\u679c\u6d88\u8d39\u8005\u4e0d\u77e5\u9053\u751f\u4ea7\u8005\u505c\u6b62\u751f\u4ea7,\u5c06\u4f1a\u4e00\u76f4\u7b49\u5f85\u83b7\u53d6<\/span>\r\n        if<\/span> pro_info :\r\n            <\/span>print<\/span>('<\/span>%s\u62ff\u8d70\u4e86%s<\/span>'<\/span> % (name,pro_info))\r\n        <\/span>else<\/span>:#<\/span>\u5f53\u6536\u5230None\u65f6,\u7ed3\u675f\u83b7\u53d6,\u9000\u51fa\u7a0b\u5e8f<\/span>\r\n            break<\/span>\r\n\r\ndef<\/span> producer(q,product):\r\n    <\/span>for<\/span> i in<\/span> range(10):\r\n      pro_info <\/span>= product + '<\/span>\u7684\u6210\u54c1%s\u53f7<\/span>'<\/span> % str(i)\r\n      q.put(pro_info)\r\n\r\n\r\n<\/span>if<\/span> __name__<\/span> == '<\/span>__main__<\/span>'<\/span> :\r\n    q <\/span>= Queue(5)#<\/span>\u89c4\u5b9a\u961f\u5217\u6700\u5927\u4e3a5<\/span>\r\n    pro = Process(target=producer, args=(q,'<\/span>\u7248\u672c\u4e00<\/span>'<\/span>))\r\n    con <\/span>= Process(target=consumer, args=(q,'<\/span>\u5c0f\u6f58<\/span>'<\/span>))\r\n    pro.start()\r\n    con.start()\r\n    pro.join()\r\n    q.put(None)<\/span>#<\/span>\u751f\u4ea7\u8005\u505c\u6b62\u751f\u4ea7\u7684\u6807\u8bc6



<\/span><\/pre> \n
#\u591a\u4e2a\u751f\u4ea7\u8005\u6d88\u8d39\u8005
from multiprocessing import Queue ,Process

def consumer(q,name):
while 1:
pro_info = q.get()#\u5982\u679c\u6d88\u8d39\u8005\u4e0d\u77e5\u9053\u751f\u4ea7\u8005\u505c\u6b62\u751f\u4ea7,\u5c06\u4f1a\u4e00\u76f4\u7b49\u5f85\u83b7\u53d6
if pro_info :
print('%s\u62ff\u8d70\u4e86%s' % (name,pro_info))
else:#\u5f53\u6536\u5230None\u65f6,\u7ed3\u675f\u83b7\u53d6,\u9000\u51fa\u7a0b\u5e8f
break

def producer(q,product):
for i in range(20):
pro_info = product + '\u7684\u6210\u54c1%s\u53f7' % str(i)
q.put(pro_info)

if __name__ == '__main__' :
q = Queue(5)#\u89c4\u5b9a\u961f\u5217\u6700\u5927\u4e3a5
pro1 = Process(target=producer, args=(q,'\u7248\u672c\u4e00'))
pro2 = Process(target=producer, args=(q, '\u7248\u672c\u4e8c'))
pro3 = Process(target=producer, args=(q, '\u7248\u672c\u4e09'))
con1 = Process(target=consumer, args=(q,'\u5c0f\u6f58'))
con2 = Process(target=consumer, args=(q, '\u674e\u56db'))
li = [pro1,pro2,pro3,con1,con2]
[i.start() for i in li]
pro1.join()
pro2.join()
pro3.join()
q.put(None)#\u751f\u4ea7\u8005\u505c\u6b62\u751f\u4ea7\u7684\u6807\u8bc6
q.put(None)<\/pre> \n
 <\/span><\/pre> \n <\/div> \n 

 <\/p> \n

\u3000\u3000joinablequeue\u6a21\u5757<\/p> \n

\n
from<\/span> multiprocessing import<\/span> JoinableQueue\r\n<\/span>#<\/span>\u7ee7\u627f\u4e86multiprocessing.Queue \u7c7b,\u65b0\u6dfb\u52a0\u4e86join(),q.task_done()<\/span>\r\n\r\nq <\/span>= JoinableQueue()\r\n\r\nq.join()<\/span>#<\/span>\u7b49\u5f85q.task_done\u7684\u8fd4\u56de\u7ed3\u679c<\/span>\r\nq.task_done()#<\/span>\u7528\u4e8e\u6d88\u8d39\u8005,\u8868\u793a\u6bcf\u6d88\u8d39\u961f\u5217\u4e2d\u4e00\u4e2a\u6570\u636e,\u5c31\u7ed9join\u8fd4\u56de\u4e00\u4e2a\u6807\u8bc6<\/span>\r\n\r\n\r\n\r\n\r\nfrom<\/span> multiprocessing import<\/span> JoinableQueue ,Process\r\n\r\n<\/span>def<\/span> consumer(q,name):\r\n    <\/span>while<\/span> 1:\r\n        pro_info <\/span>= q.get()#<\/span>\u5982\u679c\u6d88\u8d39\u8005\u4e0d\u77e5\u9053\u751f\u4ea7\u8005\u505c\u6b62\u751f\u4ea7,\u5c06\u4f1a\u4e00\u76f4\u7b49\u5f85\u83b7\u53d6<\/span>\r\n        if<\/span> pro_info :\r\n            <\/span>print<\/span>('<\/span>%s\u62ff\u8d70\u4e86%s<\/span>'<\/span> % (name,pro_info))\r\n            q.task_done()<\/span>#<\/span>\u4ece\u961f\u5217\u4e2d,\u6bcf\u62ff\u8d70\u4e00\u4e2a\u6570\u636e,\u5c31\u4f20\u7ed9join\u53d1\u9001\u4e00\u4e2a\u6807\u8bc6,\u5171\u5341\u4e2a\u6570\u636e,\u5219\u5341\u4e2a\u6807\u8bc6<\/span>\r\n\r\ndef<\/span> producer(q,product):\r\n    <\/span>for<\/span> i in<\/span> range(10):\r\n      pro_info <\/span>= product + '<\/span>\u7684\u6210\u54c1%s\u53f7<\/span>'<\/span> % str(i)\r\n      q.put(pro_info)\r\n    q.join()<\/span>#<\/span>\u8bb0\u5f55\u751f\u4ea7\u4e8620\u4e2a\u6570\u636e\u5728\u961f\u5217\u4e2d,\u6b64\u65f6\u963b\u585e\u7b49\u5f85\u7740\u5bf9\u5217\u4e2d\u7684\u6240\u6709\u6570\u636e\u5747\u88ab\u62ff\u53d6<\/span>\r\n\r\nif<\/span> __name__<\/span> == '<\/span>__main__<\/span>'<\/span> :\r\n    q <\/span>= JoinableQueue(5)#<\/span>\u89c4\u5b9a\u961f\u5217\u6700\u5927\u4e3a5<\/span>\r\n    pro = Process(target=producer, args=(q,'<\/span>\u7248\u672c\u4e00<\/span>'<\/span>))\r\n    con <\/span>= Process(target=consumer, args=(q,'<\/span>\u5c0f\u6f58<\/span>'<\/span>))\r\n    con.daemon <\/span>= True#<\/span>\u628a\u6d88\u8d39\u8005\u8fdb\u7a0b\u8bbe\u4e3a\u5b88\u62a4","orderid":"0","title":"\u8fdb\u7a0b\u4e0e\u7ebf\u7a0b(\u4e00)","smalltitle":"","mid":"0","fname":"Ruby","special_id":"0","bak_id":"0","info":"0","hits":"751","pages":"4","comments":"0","posttime":"2019-08-24 00:10:47","list":"1566576647","username":"admin","author":"","copyfrom":"","copyfromurl":"","titlecolor":"","fonttype":"0","titleicon":"0","picurl":"https:\/\/www.cppentry.com\/upload_files\/","ispic":"0","yz":"1","yzer":"","yztime":"0","levels":"0","levelstime":"0","keywords":"\u8fdb\u7a0b<\/A> \u7ebf\u7a0b<\/A>","jumpurl":"","iframeurl":"","style":"","template":"a:3:{s:4:\"head\";s:0:\"\";s:4:\"foot\";s:0:\"\";s:8:\"bencandy\";s:0:\"\";}","target":"0","ip":"120.229.33.201","lastfid":"0","money":"0","buyuser":"","passwd":"","allowdown":"","allowview":"","editer":"","edittime":"0","begintime":"0","endtime":"0","description":"\u8fdb\u7a0b\u4e0e\u7ebf\u7a0b","lastview":"1715493350","digg_num":"0","digg_time":"0","forbidcomment":"0","ifvote":"0","heart":"","htmlname":"","city_id":"0"},"page":"1"}