【发布时间】:2018-07-16 12:21:00
【问题描述】:
我的数据框data3 有 56000 行,其中一个图像缩略图 URL 作为其列值之一。我正在评估这些图像中的每一个是否都是低对比度的。我让下面的代码运行了 9 个小时!但仍然没有结果,内核仍然很忙。你能告诉我有什么问题吗?
附:我用我的数据框的子集(100 行)尝试了代码,成功运行了 3 秒。当然按照这个标准,56000 行应该需要 30 分钟。临时文件或其他东西是否发生内存溢出? 也许我需要在这里引入一个 try 块来捕获任何异常(即使没有显示错误)?我不知道该怎么做。
from PIL import Image
import urllib.request
import skimage
def f(row):
URL=row['ThumbnailURL']
#URL = 'http://www.moma.org/media/W1siZiIsIjU5NDA1Il0sWyJwIiwiY29udmVydCIsIi1yZXNpemUgMzAweDMwMFx1MDAzZSJdXQ.jpg?sha=137b8455b1ec6167'
with urllib.request.urlopen(URL) as url:
with open('temp.jpg', 'wb') as f:
f.write(url.read())
tutu = Image.open('temp.jpg')
val=skimage.exposure.is_low_contrast(tutu, fraction_threshold=0.4, lower_percentile=1, upper_percentile=99, method='linear')
return val
data3['lowcontornot'] = data3.apply(f, axis=1)
【问题讨论】:
-
56000 行需要分析很多,除了获得更好的 cpu 或在强大的 vps 上运行之外,您无能为力
-
但是如果 100 行需要 3 秒,56000 行应该需要 30 分钟!!
标签: python-3.x python-imaging-library scikit-image