【发布时间】:2015-08-02 06:15:29
【问题描述】:
您好,我编写了一个 Python 程序,该程序应该在无人值守的情况下运行。它的基本作用是通过几个线程中的 http get 请求获取一些数据,并通过 websockets 和高速公路框架获取数据。运行它 2 天表明它的内存需求不断增长,甚至在没有任何通知的情况下停止。 文档说我必须将反应堆作为应用程序中的最后一行代码运行。
我读到yappi 能够分析线程应用程序 这是一些伪代码
from autobahn.twisted.websocket import WebSocketClientFactory,connectWS
if __name__ == "__main__":
#setting up a thread
#start the thread
Consumer.start()
xfactory = WebSocketClientFactory("wss://url")
cex_factory.protocol = socket
## SSL client context: default
##
if factory.isSecure:
contextFactory = ssl.ClientContextFactory()
else:
contextFactory = None
connectWS(xfactory, contextFactory)
reactor.run()
yappi project site 的示例如下:
import yappi
def a():
for i in range(10000000): pass
yappi.start()
a()
yappi.get_func_stats().print_all()
yappi.get_thread_stats().print_all()
所以我可以将yappi.start() 放在开头,yappi.get_func_stats().print_all() 加上yappi.get_thread_stats().print_all() 在reactor.run() 之后,但由于这段代码永远不会执行,所以我永远不会执行它。
那么我该如何分析这样的程序呢?
问候
【问题讨论】: