“打开包装的价值太多了”

时间:2017-03-24 00:36:10

标签: python tuples pool

我有一个函数来批量预处理图像以转发到caffe作为输入,它类似于下面并返回两个变量。

 def processImageCrop(im_info, transformer, flowtransformer): 
      .....

      return processed_image, processed_flowimage

      class ImageProcessorCrop(object):
      def __init__(self, transformer, flowtransformer): 
        self.transformer = transformer
        self.flowtransformer = flowtransformer
        #self.flow = flow
      def __call__(self, im_info):
        return processImageCrop(im_info, self.transformer, self.flowtransformer) #, self.flow)

我用pool.map调用此函数发送im_info参数,并希望分配如下返回的两个变量,但是我得到异常太多的值要解包。两个变量的长度都应为192.如何分配返回值?谢谢。我不想迭代每个元素,但返回两个值并将它们分配给两个变量。

result ['data'],result ['flowdata'] = pool.map(image_processor,im_info)

1 个答案:

答案 0 :(得分:1)

您的pool.map来电将返回一个列表,其中包含im_info中每个值调用您的可调用类的结果。如果im_info具有两个以上的值,则将列表拆分为两个变量的赋值将无效。

如果您确实想要解压缩列表中的两元组,您可能希望使用zip来转置数据:

result['data'], result['flowdata'] = zip(*pool.map(image_processor, im_info))
相关问题