pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

      <legend id='eRyIH'><style id='eRyIH'><dir id='eRyIH'><q id='eRyIH'></q></dir></style></legend>

      <small id='eRyIH'></small><noframes id='eRyIH'>

      <tfoot id='eRyIH'></tfoot>
        <i id='eRyIH'><tr id='eRyIH'><dt id='eRyIH'><q id='eRyIH'><span id='eRyIH'><b id='eRyIH'><form id='eRyIH'><ins id='eRyIH'></ins><ul id='eRyIH'></ul><sub id='eRyIH'></sub></form><legend id='eRyIH'></legend><bdo id='eRyIH'><pre id='eRyIH'><center id='eRyIH'></center></pre></bdo></b><th id='eRyIH'></th></span></q></dt></tr></i><div class="mj3hzdr" id='eRyIH'><tfoot id='eRyIH'></tfoot><dl id='eRyIH'><fieldset id='eRyIH'></fieldset></dl></div>
          <bdo id='eRyIH'></bdo><ul id='eRyIH'></ul>

        在 python 中填充隊列和管理多處理

        Filling a queue and managing multiprocessing in python(在 python 中填充隊列和管理多處理)

          <small id='SdvrA'></small><noframes id='SdvrA'>

          • <bdo id='SdvrA'></bdo><ul id='SdvrA'></ul>
          • <legend id='SdvrA'><style id='SdvrA'><dir id='SdvrA'><q id='SdvrA'></q></dir></style></legend>
              • <tfoot id='SdvrA'></tfoot>

                1. <i id='SdvrA'><tr id='SdvrA'><dt id='SdvrA'><q id='SdvrA'><span id='SdvrA'><b id='SdvrA'><form id='SdvrA'><ins id='SdvrA'></ins><ul id='SdvrA'></ul><sub id='SdvrA'></sub></form><legend id='SdvrA'></legend><bdo id='SdvrA'><pre id='SdvrA'><center id='SdvrA'></center></pre></bdo></b><th id='SdvrA'></th></span></q></dt></tr></i><div class="umwgx3e" id='SdvrA'><tfoot id='SdvrA'></tfoot><dl id='SdvrA'><fieldset id='SdvrA'></fieldset></dl></div>
                    <tbody id='SdvrA'></tbody>
                  本文介紹了在 python 中填充隊列和管理多處理的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

                  問題描述

                  限時送ChatGPT賬號..

                  我在 python 中遇到了這個問題:

                  I'm having this problem in python:

                  • 我需要不時檢查的 URL 隊列
                  • 如果隊列已滿,我需要處理隊列中的每個項目
                  • 隊列中的每個項目都必須由單個進程處理(多處理)

                  到目前為止,我設法像這樣手動"實現(xiàn)了這一目標:

                  So far I managed to achieve this "manually" like this:

                  while 1:
                          self.updateQueue()
                  
                          while not self.mainUrlQueue.empty():
                              domain = self.mainUrlQueue.get()
                  
                              # if we didn't launched any process yet, we need to do so
                              if len(self.jobs) < maxprocess:
                                  self.startJob(domain)
                                  #time.sleep(1)
                              else:
                                  # If we already have process started we need to clear the old process in our pool and start new ones
                                  jobdone = 0
                  
                                  # We circle through each of the process, until we find one free ; only then leave the loop 
                                  while jobdone == 0:
                                      for p in self.jobs :
                                          #print "entering loop"
                                          # if the process finished
                                          if not p.is_alive() and jobdone == 0:
                                              #print str(p.pid) + " job dead, starting new one"
                                              self.jobs.remove(p)
                                              self.startJob(domain)
                                              jobdone = 1
                  

                  但是,這會導致大量問題和錯誤.我想知道我是否更適合使用進程池.這樣做的正確方法是什么?

                  However that leads to tons of problems and errors. I wondered if I was not better suited using a Pool of process. What would be the right way to do this?

                  但是,很多時候我的隊列是空的,一秒鐘可以填滿 300 個項目,所以我不太清楚這里該怎么做.

                  However, a lot of times my queue is empty, and it can be filled by 300 items in a second, so I'm not too sure how to do things here.

                  推薦答案

                  您可以使用 queue 在啟動時產生多個進程(使用 multiprocessing.Pool) 并讓它們休眠,直到隊列中有一些數(shù)據(jù)可供處理.如果您對此不熟悉,可以嘗試玩"用那個簡單的程序:

                  You could use the blocking capabilities of queue to spawn multiple process at startup (using multiprocessing.Pool) and letting them sleep until some data are available on the queue to process. If your not familiar with that, you could try to "play" with that simple program:

                  import multiprocessing
                  import os
                  import time
                  
                  the_queue = multiprocessing.Queue()
                  
                  
                  def worker_main(queue):
                      print os.getpid(),"working"
                      while True:
                          item = queue.get(True)
                          print os.getpid(), "got", item
                          time.sleep(1) # simulate a "long" operation
                  
                  the_pool = multiprocessing.Pool(3, worker_main,(the_queue,))
                  #                           don't forget the comma here  ^
                  
                  for i in range(5):
                      the_queue.put("hello")
                      the_queue.put("world")
                  
                  
                  time.sleep(10)
                  

                  在 Linux 上使用 Python 2.7.3 測試

                  這將產生 3 個進程(除了父進程).每個孩子都執(zhí)行 worker_main 函數(shù).這是一個簡單的循環(huán),在每次迭代時從隊列中獲取一個新項目.如果沒有準備好處理,worker 將阻塞.

                  This will spawn 3 processes (in addition of the parent process). Each child executes the worker_main function. It is a simple loop getting a new item from the queue on each iteration. Workers will block if nothing is ready to process.

                  在啟動時,所有 3 個進程都將休眠,直到向隊列提供一些數(shù)據(jù).當數(shù)據(jù)可用時,等待的工作人員之一獲得該項目并開始處理它.之后,它會嘗試從隊列中獲取其他項目,如果沒有可用則再次等待...

                  At startup all 3 process will sleep until the queue is fed with some data. When a data is available one of the waiting workers get that item and starts to process it. After that, it tries to get an other item from the queue, waiting again if nothing is available...

                  這篇關于在 python 中填充隊列和管理多處理的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

                  【網站聲明】本站部分內容來源于互聯(lián)網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯(lián)系我們刪除處理,感謝您的支持!

                  相關文檔推薦

                  What exactly is Python multiprocessing Module#39;s .join() Method Doing?(Python 多處理模塊的 .join() 方法到底在做什么?)
                  Passing multiple parameters to pool.map() function in Python(在 Python 中將多個參數(shù)傳遞給 pool.map() 函數(shù))
                  multiprocessing.pool.MaybeEncodingError: #39;TypeError(quot;cannot serialize #39;_io.BufferedReader#39; objectquot;,)#39;(multiprocessing.pool.MaybeEncodingError: TypeError(cannot serialize _io.BufferedReader object,)) - IT屋-程序員軟件開
                  Python Multiprocess Pool. How to exit the script when one of the worker process determines no more work needs to be done?(Python 多進程池.當其中一個工作進程確定不再需要完成工作時,如何退出腳本?) - IT屋-程序員
                  How do you pass a Queue reference to a function managed by pool.map_async()?(如何將隊列引用傳遞給 pool.map_async() 管理的函數(shù)?)
                  yet another confusion with multiprocessing error, #39;module#39; object has no attribute #39;f#39;(與多處理錯誤的另一個混淆,“模塊對象沒有屬性“f)

                      <i id='0d0a3'><tr id='0d0a3'><dt id='0d0a3'><q id='0d0a3'><span id='0d0a3'><b id='0d0a3'><form id='0d0a3'><ins id='0d0a3'></ins><ul id='0d0a3'></ul><sub id='0d0a3'></sub></form><legend id='0d0a3'></legend><bdo id='0d0a3'><pre id='0d0a3'><center id='0d0a3'></center></pre></bdo></b><th id='0d0a3'></th></span></q></dt></tr></i><div class="iloubv2" id='0d0a3'><tfoot id='0d0a3'></tfoot><dl id='0d0a3'><fieldset id='0d0a3'></fieldset></dl></div>
                        <bdo id='0d0a3'></bdo><ul id='0d0a3'></ul>

                        <small id='0d0a3'></small><noframes id='0d0a3'>

                      • <tfoot id='0d0a3'></tfoot>

                            <tbody id='0d0a3'></tbody>

                          1. <legend id='0d0a3'><style id='0d0a3'><dir id='0d0a3'><q id='0d0a3'></q></dir></style></legend>

                          2. 主站蜘蛛池模板: 槽钢冲孔机,槽钢三面冲,带钢冲孔机-山东兴田阳光智能装备股份有限公司 | 上海赞永| 招商帮-一站式网络营销服务|搜索营销推广|信息流推广|短视视频营销推广|互联网整合营销|网络推广代运营|招商帮企业招商好帮手 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 连续密炼机_双转子连续密炼机_连续式密炼机-南京永睿机械制造有限公司 | 学生作文网_中小学生作文大全与写作指导| 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 四探针电阻率测试仪-振实密度仪-粉末流动性测定仪-宁波瑞柯微智能 | 铝合金脚手架厂家-专注高空作业平台-深圳腾达安全科技 | 酒店厨房设计_中央厨房设计_北京商用厨房设计公司-奇能商厨 | 档案密集架_电动密集架_移动密集架_辽宁档案密集架-盛隆柜业厂家现货批发销售价格公道 | 多功能真空滤油机_润滑油全自动滤油机_高效真空滤油机价格-重庆润华通驰 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 托利多电子平台秤-高精度接线盒-托利多高精度电子秤|百科 | 色油机-色母机-失重|称重式混料机-称重机-米重机-拌料机-[东莞同锐机械]精密计量科技制造商 | 多功能干燥机,过滤洗涤干燥三合一设备-无锡市张华医药设备有限公司 | 蜂蜜瓶-玻璃瓶-玻璃瓶厂-玻璃瓶生产厂家-徐州贵邦玻璃制品有限公司 | 防水套管_柔性防水套管_刚性防水套管-巩义市润达管道设备制造有限公司 | 铝板冲孔网,不锈钢冲孔网,圆孔冲孔网板,鳄鱼嘴-鱼眼防滑板,盾构走道板-江拓数控冲孔网厂-河北江拓丝网有限公司 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 安平县鑫川金属丝网制品有限公司,声屏障,高速声屏障,百叶孔声屏障,大弧形声屏障,凹凸穿孔声屏障,铁路声屏障,顶部弧形声屏障,玻璃钢吸音板 | 广东教师资格网-广东教师资格证考试网 | 无尘烘箱_洁净烤箱_真空无氧烤箱_半导体烤箱_电子防潮柜-深圳市怡和兴机电 | 展厅设计-展馆设计-专业企业展厅展馆设计公司-昆明华文创意 | 贵州自考_贵州自学考试网| 工控机,嵌入式主板,工业主板,arm主板,图像采集卡,poe网卡,朗锐智科 | 沈阳建筑设计公司_加固改造设计_厂房设计_设计资质加盟【金辉设计】 | 底部填充胶_电子封装胶_芯片封装胶_芯片底部填充胶厂家-东莞汉思新材料 | 成都租车_成都租车公司_成都租车网_众行宝 | 钢托盘,铁托盘,钢制托盘,镀锌托盘,饲料托盘,钢托盘制造商-南京飞天金属13260753852 | 烟雾净化器-滤筒除尘器-防爆除尘器-除尘器厂家-东莞执信环保科技有限公司 | 广州展览设计公司_展台设计搭建_展位设计装修公司-众派展览装饰 广州展览制作工厂—[优简]直营展台制作工厂_展会搭建资质齐全 | 药品冷藏箱厂家_低温冰箱_洁净工作台-济南欧莱博电子商务有限公司官网 | 不锈钢水箱生产厂家_消防水箱生产厂家-河南联固供水设备有限公司 | 广州市哲铭油墨涂料有限公司,水性漆生产研发基地 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 电动百叶窗,开窗器,电动遮阳百叶,电动开窗机生产厂家-徐州鑫友工控科技发展有限公司 | 楼梯定制_楼梯设计施工厂家_楼梯扶手安装制作-北京凌步楼梯 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 |