包装在函数中时,Python多处理错误? AttributeError:无法腌制本地对象

时间:2019-04-12 18:37:17

标签: python python-3.x multiprocessing python-multiprocessing

我已经做了一个简单的例子,说明由于某种原因将python多重处理错误包装在函数中。有什么办法解决吗?

此代码有效:

from multiprocessing import Pool
import time

def _foo(my_number):
  square = my_number * my_number
  time.sleep(1)
  return square 

with Pool() as p:
  r = list(p.imap(_foo, range(10)))
print(r)

此代码不:

from multiprocessing import Pool
import time

def test():
  def _foo(my_number):
    square = my_number * my_number
    time.sleep(1)
    return square 

  with Pool() as p:
    r = list(p.imap(_foo, range(30)))
  print(r)

test()

出现错误消息AttributeError: Can't pickle local object 'test.<locals>._foo'

还有其他与此相关的问题,但是我很确定这不会侵犯任何这些问题。特别是,Pool()会在它需要的所有内容(_foo)之后启动。

那么一个人应该如何使用该函数中定义的内容从一个函数中调用多处理呢?

0 个答案:

没有答案