Running Python Multiprocess For Image Processing
I have a python function that takes in an image path and outputs true or false depending whether the image is black or not. I want to process several images on the same machine and
Solution 1:
I would suggest looking at Pools to easily create processes on the fly. If you need to have some shared state, in this case a boolean indicating a non-black image has been found, look at Managers.
Update: Here is an example of what I mean.
import multiprocessing.Manager as Manager
import multiprocessing.Pool as Pool
m = Manager()
p = Pool(processes=5)
state_info = m.dict()
state_info['image_found'] = FalsedefprocessImage(img):
# ... Process Image ...if imageIsBlack(img):
state_info['image_found'] = True
p.terminate()
p.apply(processImage, imageList)
if state_info['image_found']:
print'There was a black image!!'else:
print'No black images were found.'
Solution 2:
Finally this works nicely for me. Copied it from an example here. For illustration purpose I have replaced my _isImgNonBlack function and the image sequence as a list of 0's and 1's, where 0 being a black image and 1 non-black image.
import multiprocessing
defisImgNonBlack(result_queue, imgSeq):
for img in imgSeq:
# If a non-black is found put a resultif img==1:
result_queue.put(1)
# else put a zero as the result
result_queue.put(0)
if __name__ == '__main__':
processs = []
result_queue = multiprocessing.Queue()
nbProc = 20# making a fake list of images with # 10,000 0's follwed by a single 1
images = [0for n inrange(10000)]
images.append(1)
for n inrange(nbProc): # start processes crawling for the result
process = multiprocessing.Process(target=isImgNonBlack, args=[result_queue, images])
process.start()
processs.append(process)
print'Starting Process : %s' % process
result = result_queue.get() # waits until any of the proccess have `.put()` a resultfor process in processs: # then kill them all off
process.terminate()
# finally print the resultprint"Seq have a non black img: %s" % result
Post a Comment for "Running Python Multiprocess For Image Processing"