簡體   English   中英

Python動態寫入大文件,避免100%CPU使用率

[英]Python Write dynamically huge files avoiding 100% CPU Usage

我正在借助這個好東西來解析一個大約2 GB的CSV巨大文件。 現在必須為新文件中的每一列生成動態文件,其中列名為文件名。 因此,我編寫了以下代碼來編寫動態文件:

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

現在,使用100% CPU寫入這些巨大的文件大約需要50秒。因為服務器上還有其他繁重的工作。 我想阻止我的程序僅使用10%到20%的CPU並寫入這些文件。 無論花費10-15分鍾。 如何優化我的代碼,使其應限制10-20%的CPU使用率。

有多種方法可以實現此目的:

  • 尼斯的過程-簡單明了。

  • cpulimit-只需將腳本和cpu用法作為參數傳遞:

    cpulimit -P /路徑/到/您的/腳本-l 20

  • Python的資源包,用於從腳本設置限制。 請記住,它與絕對CPU時間一起工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM