我遇到了Python多处理问题。我正在处理(1512,2016)大小的大图像。基本上我要做的是切片图像并对其进行一些操作。由于我正在处理的图像数据集太大。我想创建和分发图像片段到工作进程而不是主要计算。我得到错误的一点是,在我读取并切片所有图像并将它们放入队列之后。当我要求工作进程开始运行时处理这些图像的时候我收到了这个错误
assignToWorkers()
File "multi.py", line 168, in assignToWorkers
[worker.start() for worker in workers]
File "/usr/lib/python2.7/multiprocessing/process.py", line 130, in start
self._popen = Popen(self)
File "/usr/lib/python2.7/multiprocessing/forking.py", line 121, in __init__
self.pid = os.fork()
OSError: [Errno 12] Cannot allocate memory
我开始怀疑我使用python多处理的方式。我需要2个进程处理这些部分,我基本上就是这样做
global storage # global queue
class processclass(multiprocessing.Process):
def __init__(self, datasubset, result_queue):
multiprocessing.Process.__init__(self)
def run():
self.datasubset
# some logic here
workers = [ processclass(storage.get(), result_queue) for datasubset in range(2) ] # creating two process from process class
[worker.start() for worker in workers]
[ worker.join() for worker in workers]
我正在尝试处理500 MB图像数据集,并且在虚拟机上有2个内核和6gb ram