我得到的問題是,我有一個Python腳本,每次執行它時都會編碼大約數千個圖像,並且不佔用大部分內存和CPU。Python PIL庫性能
如何提高性能以避免I/O開銷?
該腳本每次執行時都會生成5000個縮略圖,我想知道是否可以將圖像存儲在內存中,然後將它們「刷新」到硬盤以提高性能。
您是否有一些建議來強化我的腳本的性能?
循環內的代碼片段:
im = Image.open(StringIO.StringIO(urllib.urlopen(imagen_url).read()))
im.thumbnail((100, 50), Image.ANTIALIAS)
if im.mode != "RGB":
im = im.convert("RGB")
im.save(dir + (imagen % coche_id), "JPEG")
大部分的時間都花在與的urlopen(),但im.save可以改善的,我認爲。
我仍然從Python開始,我想你可以幫助我改進我的代碼。
非常感謝!
pd:對不起,如果我的英文不夠好,應該是。
你完全正確。 urlopen總是會使進程變慢,但我認爲如果我可以減少I/O開銷,服務器將會變得更快,因爲它可以更快地從磁盤讀取,而不會出現寫入小縮略圖的問題(大約4KB或更少每一個)。也許每次寫入10MB的圖像或者類似的東西都會更好。 – woodgate 2011-03-26 20:02:08
我並不是100%肯定會讓它變得更好。 也許你可以看看aggdraw?它使某些PIL操作更快(PIL的抗混疊濾波器被稱爲超慢)。 – ojii 2011-03-26 20:27:02