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