【问题标题】:Returning value from a process creator function in python in multiprocessing在多处理中从python中的进程创建函数返回值
【发布时间】:2011-01-07 07:02:30
【问题描述】:

我从http://docs.python.org/library/multiprocessing.html#multiprocessing-examples中挑选了一个sn-p

import multiprocessing
def queue_func(queue):
    for i in range(30):
        time.sleep(0.5 * random.random())
        queue.put(i*i)
    queue.put('STOP')

def test_queue():
    q = multiprocessing.Queue()

    p = multiprocessing.Process(target=queue_func, args=(q,))
    p.start()

    o = None
    while o != 'STOP':
        try:
            o = q.get(timeout=0.3)
            print o,
            sys.stdout.flush()
        except Empty:
            print 'TIMEOUT'
test_queue()

是否可以在 test_queue() 函数中插入 return 语句?

这就是我想做的... 每次客户端发送请求时,我都想创建一个新进程来处理各个客户端的后端处理并将结果返回给客户端。我怎么做?非常感谢一个简单的演示。

【问题讨论】:

  • AFAIK,它最后已经有一个隐含的“return None”,所以你可以例如将其更改为“return o”。
  • 当我尝试插入 return 语句并调用函数时,我得到的只是异常类型:TypeError 异常值:'module' object is not callable
  • 好吧!!这只是一个实例化问题......很抱歉打扰你:)

标签: python multiprocessing


【解决方案1】:

是的,当然可以。您只需在 while 循环后添加 return whatever

要获得更有用的答案,最好解释一下您想要实现的目标、您尝试实现的目标以及失败的原因。

【讨论】:

  • 嘿,我解决了这个问题。我刚刚将我的多线程程序转换为多处理程序。显然系统的性能没有改变。再次重申我的问题:我的应用程序是基于 Web 的,用户(可能有很多)使用 Web 前端上传文档,系统在后端处理文档并将结果返回给用户。后端处理可能需要很长时间(可能是 45 秒)。哪个(多线程/处理)更适合我的系统来处理多个用户?在这两种情况下,较长的后端处理也会影响较短的后端处理任务。
  • @kailashbuki:多处理更好。
猜你喜欢
  • 2021-10-15
  • 1970-01-01
  • 2021-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-11-29
  • 1970-01-01
  • 2014-09-05
  • 2015-09-14
相关资源
最近更新 更多