我正在尝试对某些文件进行多处理。这些文件属于两个不同的类别,即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
都是相同的。如果我将其设置为全局,则将无法使用同一列表中的池实例来写入数据。