tornado - 对象内存释放

2 投票
1 回答
555 浏览
提问于 2025-04-18 13:20

我正在使用tornado、pandas和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()

1 个回答

3

self.finish() 之后添加以下几行代码。

del testDataFrame
import gc
gc.collect()

撰写回答