使用WingIDE时,Google应用引擎开发服务器启动缓慢

2024-05-23 14:35:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在谷歌应用引擎上开发。我使用WingIDE(pythonide)在开发服务器上调试。我的数据存储中有几千个实体,我可以看到当开发服务器启动时,它必须经过DatastoreFileStub.Read()并做每一个实体所做的事情。在

问题是,当我通过WingIDE运行开发服务器时,它的运行速度非常慢。我在google应用程序引擎中放了一些分析日志代码来达到峰值。在

当我在命令行上运行开发服务器时,收到以下消息:

Finished reading 10374 Entites in 10.17 seconds, 1019 per second

但是,当我通过WingIDE运行开发服务器时,我得到以下信息:

Finished reading 10374 Entites in 52.44 seconds, 197 per second

有人知道为什么wingede会慢5倍吗?在


Tags: 数据in引擎实体服务器wingidesecondssecond
2条回答

可能是因为你有一个调试器连接起来了——调试器通过检测所有的东西来降低代码的速度,而反序列化数据存储是一项大量的工作。在

使用use_sqlite标志将启用一个实验性的基于sqlite的本地数据存储,这将需要较少的启动时间。但是请注意,当您切换到数据存储时,它将要求您擦除数据存储。在

一个想法是在启动完成后使用wingdbstub开始调试。你需要在某个地方添加一个“import wingdbstub”,但是在启动后可以在任何地方调用它。当然,模块必须在python路径上,IDE必须配置为监听连接,并且您需要设置一些基本的安全性,这在http://wingware.com/doc/debug/importing-the-debugger中有详细描述

还有一个API,可以让您提前开始调试,并在调试器开销过大的地方临时关闭它。见http://wingware.com/doc/debug/debugger-api

调试器开销是一件棘手的事情(至少对于CPython来说是这样),因为它和执行的Python字节码的数量成正比。查看Python代码并不总是明显的,在解释字节码的解释器中有多少时间,C/C++库或Python内部的时间是多少。类似于在大量数据上迭代的嵌套Python循环,如果它们的工作主要是在Python中完成的,那么它们在调试器中的速度会慢得多。在许多情况下,大部分工作实际上是在Python内部或库代码中完成的,因此调试器不会降低速度。在

相关问题 更多 >