Python动态地编写大文件,避免了100%的CPU使用率

2024-10-01 19:19:29 发布

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

this great stuff的帮助下,我正在解析一个巨大的CSV大约2GB的文件。现在必须为新文件中的每个列生成动态文件,其中列名作为文件名。所以我写了这段代码来写动态文件:

def write_CSV_dynamically(self, header, reader):
  """
  :header - CSVs first row in string format
  :reader - CSVs all other rows in list format  
  """

  try:
    headerlist =header.split(',') #-- string headers 
    zipof = lambda x, y: zip(x.split(','), y.split(','))
    filename = "{}.csv".format(self.dtstamp)
    filename = "{}_"+filename
    filesdct = {filename.format(k.strip()):open(filename.format(k.strip()), 'a')\
    for k in headerlist}
    for row in reader:
      for key, data in zipof(header, row):
        filesdct[filename.format(key.strip())].write( str(data) +"\n" )
    for _, v in filesdct.iteritems():
      v.close()
  except Exception, e:
    print e

现在,使用50秒来编写这些巨大的文件需要大约100% CPU秒。我想阻止我的程序只使用10%到20%的CPU来写这些文件。不管需要10-15分钟。 我如何优化我的代码,以便它应该限制10-20%的CPU使用率。在


Tags: 文件csv代码informatfor动态cpu
1条回答
网友
1楼 · 发布于 2024-10-01 19:19:29

实现这一目标的方法有很多:

  • Nice过程简单明了。

  • cpulimit-只需将脚本和cpu使用率作为参数传递:

    cpulimit-p/path/to/your/script-l20

  • Python的resource包来设置脚本的限制。请记住,它与绝对CPU时间一起工作。

相关问题 更多 >

    热门问题