From 0d9ff4637d7bf7c1e621fa1e19009435f8b39ba1 Mon Sep 17 00:00:00 2001 From: dingjian <574258651@qq.com> Date: Fri, 14 Jun 2019 15:26:01 +0800 Subject: [PATCH] fix multi process bug for python2 --- ImgSplit_multi_process.py | 16 ++++++++++------ SplitOnlyImage_multi_process.py | 10 ++++++++-- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ImgSplit_multi_process.py b/ImgSplit_multi_process.py index 7499dca..2dd36f0 100644 --- a/ImgSplit_multi_process.py +++ b/ImgSplit_multi_process.py @@ -38,6 +38,8 @@ def cal_line_length(point1, point2): return math.sqrt( math.pow(point1[0] - point2[0], 2) + math.pow(point1[1] - point2[1], 2)) +def split_single_warp(name, split_base, rate, extent): + split_base.SplitSingle(name, rate, extent) class splitbase(): def __init__(self, @@ -78,6 +80,7 @@ def __init__(self, self.choosebestpoint = choosebestpoint self.ext = ext self.padding = padding + self.num_process = num_process self.pool = Pool(num_process) print('padding:', padding) @@ -258,15 +261,16 @@ def splitdata(self, rate): """ :param rate: resize rate before cut """ - imagelist = GetFileFromThisRootDir(self.imagepath) imagenames = [util.custombasename(x) for x in imagelist if (util.custombasename(x) != 'Thumbs')] + if self.num_process == 1: + for name in imagenames: + self.SplitSingle(name, rate, self.ext) + else: - worker = partial(self.SplitSingle, rate=rate, extent=self.ext) - # - # for name in imagenames: - # self.SplitSingle(name, rate, self.ext) - self.pool.map(worker, imagenames) + # worker = partial(self.SplitSingle, rate=rate, extent=self.ext) + worker = partial(split_single_warp, split_base=self, rate=rate, extent=self.ext) + self.pool.map(worker, imagenames) def __getstate__(self): self_dict = self.__dict__.copy() diff --git a/SplitOnlyImage_multi_process.py b/SplitOnlyImage_multi_process.py index 0e80157..3c7be49 100644 --- a/SplitOnlyImage_multi_process.py +++ b/SplitOnlyImage_multi_process.py @@ -6,6 +6,9 @@ from multiprocessing import Pool from functools import partial + +def split_single_warp(name, split_base, rate, extent): + split_base.SplitSingle(name, rate, extent) class splitbase(): def __init__(self, srcpath, @@ -53,6 +56,9 @@ def SplitSingle(self, name, rate, extent): weight = np.shape(resizeimg)[1] height = np.shape(resizeimg)[0] + # if (max(weight, height) < self.subsize/2): + # return + left, up = 0, 0 while (left < weight): if (left + self.subsize >= weight): @@ -77,8 +83,8 @@ def splitdata(self, rate): imagelist = util.GetFileFromThisRootDir(self.srcpath) imagenames = [util.custombasename(x) for x in imagelist if (util.custombasename(x) != 'Thumbs')] - worker = partial(self.SplitSingle, rate=rate, extent=self.ext) - + # worker = partial(self.SplitSingle, rate=rate, extent=self.ext) + worker = partial(split_single_warp, split_base=self, rate=rate, extent=self.ext) self.pool.map(worker, imagenames) # # for name in imagenames: