python - 通过 PyCharm 运行的脚本比直接在命令行中运行时执行得更好
问题描述
在这里已经提出了同样的问题,但没有得到答案。
我编写了一个需要很长时间才能完成的脚本,并且正在使用一个模块 ( tqdm ) 向我提供有关其进度的反馈。当通过 PyCharm 在远程环境中运行时,脚本性能在每秒 800 到 1000 次迭代之间,估计总运行时间在 4 到 5 小时之间。
当我尝试在同一个远程环境中通过经典 Linux 命令行运行脚本时,就会出现问题。在相同的情况下,在相同的环境中,使用相同的命令,唯一的区别是我自己键入而不是让 PyCharm 为我发出它,脚本性能下降到每秒 200-300 次迭代,导致估计 10 -16 小时运行。
在 PyCharm 中,我的脚本的运行配置窗口如下所示:
如您所见,使用的解释器位于我的开发服务器上,位于整个项目使用的虚拟环境中。
我不得不隐藏脚本名称和参数,您可能会觉得这很不方便,但我不认为我的问题与脚本本身或其内容有关。
为了通过命令行运行相同的脚本,这是我所做的:
- SSH 到我的服务器
cd
到我的项目文件夹- 激活我的环境
export PYTHONPATH=$(pwd)
- 使用相同的选项运行相同的脚本
...实际上应该导致相同的行为,对吗?嗯,是的,但速度不一样。有 70% 的性能下降是由于我无法弄清楚的原因而发生的,而且似乎在 Internet 上没有任何记录。
我也尝试过,试图完美地模拟 Pycharm 所做的事情:
- 在运行脚本时复制 PyCharm 的确切命令输出,并将其粘贴到我的终端中(无济于事)
- 在运行脚本之前发出
export PYTHONUNBUFFERED=1
,我知道这不会改变任何东西(它没有)
我正在为此失去理智。这是一些阴暗的 PyCharm 恶作剧的结果吗?
任何与 PyCharm 所做的任何事情相关的输入,甚至可以远程加速 Python 脚本执行的某些方面,都值得赞赏!
提前致谢。
解决方案
推荐阅读
- java - 无法使用自定义格式化程序
- java - 从 Embedded ElasticSearch 迁移到 spring-data-elasticsearch 4.0.6.RELEASE
- ruby-on-rails - 具有唯一索引的 Rails 迁移,null:false,默认值:“”
- javascript - Next.js 路由器语言环境问题
- typescript - 使用解构和区分联合处理默认值
- c# - 如何从 asp.net 核心 API 将文档发送到 elasticsearch
- routes - 如果目标设置为“静态”,则 Nuxt.js 路由中间件问题
- sapui5 - 为什么有些 UI 组件的高度比平时小?
- cypress - 赛普拉斯测试通过`cypress open`,但因`cypress run`失败
- web - 谷歌 dns 数据库的大小是多少?