处理图像列表时Python多处理内存错误
我在Python多处理方面遇到了麻烦。我正在处理大约(151220016)大小的大型图像。基本上我要做的是对图像进行切片并对其进行一些操作。因为我正在处理的图像数据集太大。我想创建图像片段并将其分发给工作进程,而不是进行主要计算。我得到错误的一点是,在我读取和切片所有图像并将它们放入队列之后。当需要处理这些图像时,当我调用辅助进程开始运行时,我得到了这个错误处理图像列表时Python多处理内存错误,python,multiprocessing,python-multiprocessing,Python,Multiprocessing,Python Multiprocessing,我在Python多处理方面遇到了麻烦。我正在处理大约(151220016)大小的大型图像。基本上我要做的是对图像进行切片并对其进行一些操作。因为我正在处理的图像数据集太大。我想创建图像片段并将其分发给工作进程,而不是进行主要计算。我得到错误的一点是,在我读取和切片所有图像并将它们放入队列之后。当需要处理这些图像时,当我调用辅助进程开始运行时,我得到了这个错误 assignToWorkers() File "multi.py", line 168, in assignToWorkers [work
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多处理的方式。我需要两个过程的作品,我基本上是这样做的
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