我的flask应用程序面临内存问题,每次请求后内存都没有释放到操作系统。内存不断积累,最终,它会凝结,程序会耗尽内存
为了解决这个问题,我使用了多重处理,并在一个单独的过程中处理计算
def process_yolact(self, front, side):
try:
manager = multiprocessing.Manager()
return_dict = manager.dict()
def worker_process(return_dic, front, side):
front_mask, front = self.obj_yolact.run_yolact(front, 'f')
side_mask, side = self.obj_yolact.run_yolact(side, 's')
gc.collect()
return_dic['1'] = True
return_dic['2'] = front
return_dic['3'] = side
return_dic['4'] = front_mask
return_dic['5'] = side_mask
p = Process(target=worker_process, args=(return_dict, front, side))
p.start()
p.join()
return return_dict.values()
except:
return False, None, None, None, None
def process_maskrcnn(self, front, side):
try:
manager = multiprocessing.Manager()
return_dict = manager.dict()
def worker_process(return_dic, front, side):
frontrcnnmask, frontmask = self.obj_maskrcnn.run_maskrcnn(front, 'f')
sidercnnmask, sidemask = self.obj_maskrcnn.run_maskrcnn(side, 's')
gc.collect()
return_dic['1'] = True
return_dic['2'] = frontrcnnmask
return_dic['3'] = sidercnnmask
return_dic['4'] = frontmask
return_dic['5'] = sidemask
p = Process(target=worker_process, args=(return_dict, front, side))
p.start()
p.join()
return return_dict.values()
except:
return False, None, None, None, None
我使用进程并在每次请求后结束它们
现在,当我一次发送多个请求时,我会得到很少的输出,而很少的请求没有任何输出
我尝试使用gunicorn
处理请求,以便在线程中处理请求,但没有成功。我们怎样才能解决这样的问题
目前,我正在使用waitress
为服务器上的应用程序提供服务
这样,一次可以处理多个请求而不会出现任何问题
目前没有回答
相关问题 更多 >
编程相关推荐