2014-04-21 45 views
2

我對優化內存效率的程序有些新東西,所以這可能看起來有些簡陋:如果我打算向zip中添加數百個文件(可能爲100mb +),哪種方法會更好地保持系統資源可用? (和捕捉)如何以高效的內存方式將大量文件添加到zip中?

下面的zip_queue變量是globbed文件的列表。

我目前的方法:

with zipfile.ZipFile(zip_name, "a", compression=zipfile.ZIP_DEFLATED) as myzip: 
    for file in zip_queue: 
     myzip.write(file) 

OR這樣:

for file in zip_queue: 
    with zipfile.ZipFile(zip_name, "a", compression=zipfile.ZIP_DEFLATED) as myzip: 
     myzip.write(file) 

我猜後者將在每次追加文件時刷新的內存,但會打開和關閉ZIP每次都會產生比簡單地保持文件打開更大的內存成本?

謝謝!

+0

什麼是內存分析器說哪些代碼消耗更少的內存和多少數據? – jfs

回答

1

我會這樣做的第一種方法,只是爲了避免關閉和重新打開相同的輸出文件。我懷疑每種方法使用的內存究竟有多少內存的細節,如果這些細節確實很重要,則需要使用Python以外的其他代碼編寫代碼。

作爲一般規則,文件訪問速度比內存慢,所以我根本不用擔心內存使用情況,除非您有實際的問題可以演示。

+0

謝謝約翰!我提出這個問題是因爲我編寫的腳本替換了一個較老的Perl腳本,它在處理大量文件時確實會崩潰。 – seitzej

相關問題