2014-07-15 2 views
2

나는 토네이도, 팬더, numpy 모듈을 사용하여 웹 애플리케이션을 개발 중이다.토네이도 - 객체 메모리 처분

요청이 처리 된 후이 응용 프로그램의 메모리 크기가 증가하고 절대로 다운되지 않습니다.

"PrintInfo"클래스에 할당 된 메모리가 삭제되지 않았다고 생각합니다.

이 상황을 어떻게 처리 할 수 ​​있습니까?

도움을 주시면 감사하겠습니다.

다음은 샘플 코드입니다.

#-*- coding: UTF-8 -*-' 
import tornado.httpserver 
import tornado.web 
import pandas as pd 
import numpy as np 

class PrintInfo: 
    def PrintDataFrame(self, _df): 
     print _df.head() 

class MainHandler(tornado.web.RequestHandler): 
    def get(self): 
     randn = np.random.randn 
     testDataFrame = pd.DataFrame(randn(1000000 , 100)) 

     save=PrintInfo() 
     save.PrintDataFrame(testDataFrame) 

     self.write("Done!!") 
     self.finish() 

class Application(tornado.web.Application): 
    def __init__(self): 
     handlers = [ (r"/", MainHandler), ] 
     settings = dict(debug=True) 
     tornado.web.Application.__init__(self, handlers, **settings) 

if __name__ == "__main__": 
    http_server = tornado.httpserver.HTTPServer(Application()) 
    http_server.listen(9999) 
    tornado.ioloop.IOLoop.instance().start() 

답변

3

self.finish() 뒤에 다음 행을 추가하십시오.

del testDataFrame 
import gc 
gc.collect() 
+0

감사합니다. 잘 작동한다. –

+0

@hyry는 gc.collect()가 이벤트 루프를 차단합니까? 나는 이것을 테스트하는 방법을 모른다. – Mohammadhzp