我遇到的问题是,我有一个Python脚本,每次执行它时都会对数千个图像进行编码,而且它没有占用大部分内存和CPU。
如何提高性能,避免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:对不起,如果我的英语不太好的话。
发布于 2011-03-26 21:11:15
您可以通过并发运行几个线程来利用一些i/o并发。这可能在两方面有所帮助:
在这种情况下,GIL不是一个问题,因为它是在i/o操作期间发布的。
如果您希望立即阻止将文件写入磁盘,一种方法可能是关闭当前正在写入的设备上的fsync。
发布于 2011-03-26 19:55:13
大部分时间用于urlopen(),但我认为im.save可以改进。
这是因为urlopen (或者更确切地说是read)位在网络上执行IO,这将取决于可用的带宽和服务器的带宽而变慢。
所以是的,如果你想在网上下载5000张图片的话,你没什么可以加快速度的。
https://stackoverflow.com/questions/5444892
复制相似问题