【问题标题】:python script keeps using 120% CPUpython脚本一直使用120%的CPU
【发布时间】:2013-05-02 12:19:08
【问题描述】:

我的 websocket 脚本有问题。随着时间的推移,它会消耗越来越多的 CPU。我发现的一种补救措施是清除关联的日志文件。这暂时解决了这个问题,但 CPU 使用率在一天多一点的时间内就增加到了 120%。 (在linux服务器上使用top命令)

执行文件写入的脚本部分对我来说有点奇怪。代码如下:

 f = open(file, 'a')
 f.write(line+"\n")
 os.fsync(f.fileno())
 f.flush()
 f.close

我不是 Python 专家,但对于初学者来说,我认为最后三件事的作用大致相同。 python手册指出http://docs.python.org/2/library/os.html#os.fsync f.flush 和 os.fsync 应该是相反的顺序...

我可以使用吗:

 f = open(file, 'a')
 f.write(line+"\n")
 f.close

不应该是:f.close()??

有什么想法吗?

【问题讨论】:

  • 你永远不会关闭你的文件,是的,它应该是f.close()
  • 你说得对,close() 意味着flush(),我不知道fsync() 是什么意思如果你已经在处理文件对象而不是在原始句柄上。

标签: python performance file-io python-2.7


【解决方案1】:

使用它来打开(并自动关闭)您的文件:

with open(filename, 'a') as f:
    f.write(line+"\n")

【讨论】:

  • 即使进行了这种修改,脚本仍然像疯了一样吃CPU。这是正确的答案,所以我会接受。
猜你喜欢
  • 1970-01-01
  • 2017-01-27
  • 2013-01-30
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 2015-03-31
  • 2022-12-31
  • 1970-01-01
相关资源
最近更新 更多