Передача аргументов в функцию, используемую Pool - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь сделать многопроцессорную обработку некоторых файлов.Файлы принадлежат двум разным категориям, а именно A и B.Идея состоит в том, чтобы перебрать все файлы, имена файлов которых содержатся в двух списках category_A и category_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_A и category_B,Если я сделаю его глобальным, то для записи данных будет невозможно использовать экземпляры пула в том же списке.

...