将参数传递给Pool使用的函数

时间:2018-09-30 18:12:27

标签: python python-3.x multiprocessing pool

我正在尝试对某些文件进行多处理。这些文件属于两个不同的类别,即AB。想法是遍历所有文件,文件名包含在两个列表category_Acategory_B中。这是我编写的用于进行多处理的简单类:

class ImageProc:
    def __init__(self):
        self.data = []

    def __call__(self, sample, category="A"):
        subject = str(sample)
        sample = loadmat(sample)
        age  = int(sample["Age"][0][0])
        nb_images = sample['images'].shape[2]
        del sample
        for i in range(nb_images):
            self.data.append((subject, category, age, i))
        gc.collect()

# This works fine for category A
proc = ImageProc()
pool = Pool()
_ = pool.map(proc, category_A)

但是现在我想为category_B使用相同的实例并调用相同的函数,为此我必须在category="B"方法中显式传递参数__call__。谁能帮我实现该目标吗?

编辑:鉴于有用的评论,我还想阐述一下,此列表由self.data表示,对于category_Acategory_B都是相同的。如果我将其设置为全局,则将无法使用同一列表中的池实例来写入数据。

0 个答案:

没有答案