ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

proc = multiprocessing.Process(target=worker, args=(queue,))

proc = multiprocessing.Process(target=worker, args=(queue,)) [PROTECTED_999b3d2577c803c8c18136cd168c5f50]本文讲述了, .Queue以及.().Queue()的处置办法, 对于大伙处理问题有一定的借鉴意义, 有需求的朋友们接下来跟着小编一块儿进行学习吧问题描述限时送账号..我有这样一个简单的任务:I have a task like that:def worker(queue): while True: try: _ queue.get_nowait() except Queue.Empty: break if __name__ __main__: manager multiprocessing.Manager() # queue multiprocessing.Queue() queue manager.Queue() for i in range(5): queue.put(i) processes [] for i in range(2): proc multiprocessing.Process(targetworker, args(queue,)) processes.append(proc) proc.start() for proc in processes: proc.join()好像, .Queue能搞定我所需的全部工作, 可是, 另一方面, 我瞅见好多().Queue()的例子, 却弄不清楚自己究竟需要啥。看上去, ().Queue()采用某种代理对象, 然而我不晓得这些用途何在, 因.Queue()无需任何代理对象就能完成相同工作。所以我的问题是:1) .Queue返回的对象跟.().Queue()返回的对象, 二者存在什么样的差异呢。1) 呃, 啥呀。队列并且通过。(那个操作).通过用来创建队列的方法(的操作)?2) 我需要使用什么?2) What do I need to use?推荐答案虽说我针对这个主题的领会程度有限, 然而就我已做的情况而言, 我能够瞧出, .Queue() 与.() 之间存在着一项主要的差异, .Queue():。我所做的这个, 关于它, 从我所施行的情况来看, 我能说出, 那个主要的, 存在着一种, 队列, 以及, .队列:当心, 当有一个对象被投放到队列里时, 此对象会被腌制起来, 而且后台线程随后会把腌制数据刷新至底层管道。这会引发一些让人感到惊奇诧异的后果, 但并不会引发任何实际存在的困难——要是它们真的让您感到困扰的话, 那么您能够换用由经理创建的队列。在把对象放进空队列之后, 队列的empty()方法会返回False, 并且在不引发Queue.Empty的情形下返回之前极有可能存在那么一个无限小的延迟。要是有多个进程正在对对象进行排队操作, 那么对象在另一端有可能会乱序被接收。不过, 由同一个进程排队的对象肯定会始终按照预期的顺序排列的。警告, 像上述提到的那样, 要是子进程把项目放进了队列, 而且它没使用点, 那么这个进程不会终止, 一直到所有缓冲的项目都被刷新到管道。这表明要是你试着加入这个进程, 你也许会遭遇死锁, 除非你确定已放入队列的所有项目都被消耗了。同样地, 如果子进程不是守护进程, 那么父进程在尝试挨个加入其所有非守护子进程时可能会挂起然后退出。要注意, 用管理器创建的队列不存在这样的问题。把队列设置成全局变量加以设定, 在初始化阶段使之被供各路进程所用, 如此这般, 就能把.Queue() 和Pool一块儿来用啦:。存在一种情况, 即通过将队列用作一种方式, 并将其提供给所有处于该状态的对象来使用, 有在进程池Pool中使用队列Queue()的需求。queue multiprocessing.Queue() def initialize_shared(q): global queue queueq pool Pool(nb_process,initializerinitialize_shared, initargs(queue,))会去创建有着正确共享队列的池进程, 可是呢我们能够争辩声称, 那个.Queue() 对象并非是为了此用途而被创建的。这句子输入不太符合正常语法逻辑, 按照要求改写后如下: 但我们能论证, 那个, 对会和汇集在一起, 只是不行为此用途来说。队列不是的。另一方面, .Queue()能够在池子进程之间进行共享, 其方式是, 把它当作函数的普通参数来传递。另一方面, 那个。Queue能够被它当作一个。的一部分来进行池化 拆分后的表述依然难以理解原意, 原句语法实在混乱。对我而言, 运用.( ).Queue( )于任何情形下皆是不错的, 并且麻烦程度更低。运用经理或许会存在一些弊端, 不过我不清楚。用我的话说, 在每种情况下使用那个某个未明确的东西.Queue() 都是合适的且更少某种情况。可能存在一些人使用另一个未明确的东西, 但我并不知晓这种情况。关于那篇涉及到, .Queue以及.().Queue()的文章, 在此就介绍完毕了, 期望我们所推荐的答案, 能够对大家产生有所帮助的作用, 同时也期望大家能够给予html5模板网, 多多的支持
返回列表