gpt4 book ai didi

linux - 运行高内存消耗(Python/Perl)脚本的良好环境是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:22 24 4
gpt4 key购买 nike

我正在寻找一些有更多经验的程序员对新开发系统的建议,但让我给出一些背景来说明原因。

  • 我们需要一个新的开发服务器在大型提要上运行脚本
  • 速度不是问题,只需要完成
  • 脚本不经常运行,并且通常编码非常快(未优化)使用 Python 或 Perl

当前问题:

  • 需要处理更大的提要,并且由于内存错误需要重构现有脚本来处理它们
  • 运行脚本的系统是一台 4GB 内存的 Win32 机器,单个进程永远不会被允许超过 2GB 的空间

我不想让我的团队花时间重构一个很少使用的脚本,而是希望能够为它投入更多的内存。我知道 64 位升级会有所帮助,但我不确定哪种类型的环境最适合运行需要大量内存的脚本,所以这就是我要征求建议的原因。

我一直在研究 Solaris 服务器、FreeBSD 服务器,只使用 64 位 Windows...一旦安装了 64 位版本的 Python/Perl 和脚本,很难弄清楚每个系统将能够做什么实际上正在运行。如果系统有 16GB 内存,我什么时候会遇到单个进程的内存错误?

一些其他的东西:

  • SSH 到远程服务器是一个可接受的解决方案(可能是理想的,因此我们可以让多个用户运行脚本)
  • 我们有 VMWare 可用,因此如果有人对使用 VMWare 客户端进行开发有经验/意见,这是另一种选择

任何关于新系统的建议,或者我在做决定时应该考虑的其他事情都会很棒。

最佳答案

“而不是我的团队花时间重构一个很少使用的脚本,”

显然,该脚本具有相当大的值(value),即使很少运行。

通常,小的改变会产生大的好处。

具体来说,

  • 如果分解较长的代码段以隔离中间值和临时值,则允许更频繁的垃圾回收。将大功能分解成小功能。这也许是最难的。

  • 如果将 range 替换为 xrange,则可以避免创建临时列表对象。在某些情况下,您可能会发现可以从 enumerate 中获益的循环,取代 range/xrange 业务。这是一个快速的 grep。

  • 如果您重新考虑任何字符串连接操作并找到将它们放入您(最终)与 "".join( listOfStrings ) 合并的列表的方法。您将节省自己创建大量并不重要的临时中间字符串对象的时间。这需要阅读代码并进行一些重构以找到字符串之间的 += 操作。

只需一两个小时的工作,您就可以显着减少内存消耗。

关于linux - 运行高内存消耗(Python/Perl)脚本的良好环境是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1194627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com