urllib2, cstringIO 및 PIL을 사용하고 있습니다. 나는 이것을 실제로 조정해야하고 매우 빠르게 만들 필요가 있습니다 (현재 속도의 절반 이상).Python으로 웹에서 이미지를 처리하는 가장 빠른 방법은 무엇입니까?
아래를 사용하여 이미지에 액세스하고로드합니다. 이 평균 0.6 초가 걸립니다
@log_performance
def process_image(image, sample_limit=10000, top=10):
colors = image.getcolors(sample_limit)
sc = sorted(colors, key=lambda x: x[0], reverse=True)
return sc[:top]
이미지 처리 및 약 0.006 초를 얻을 :
imageurl = "http://bit.ly/wOqVTE"
@log_performance
def get_image(imageurl):
img_file = urllib.urlopen(imageurl)
data = StringIO(img_file.read())
im = Image.open(data)
size = 128, 128
im.thumbnail(size, Image.ANTIALIAS)
return im
나서 사용하여 이미지를 처리한다.
어떻게 처리 속도를 높일 수 있습니까?
전체 요점은 여기에서 찾을 수 있습니다. https://gist.github.com/1920167
>>>>Function: get_image, Executed:20, Avg Time:0.558275926113
>>>>Function: process_image, Executed:20, Avg Time:0.00609920024872
나는 사람이 할 수있는 시간의 절반 50의 현상금을 추가합니다.
시도 분할'PIL에 소요되는 네트워크 I/O 및 정도에 시간의 양 볼까지 get_image'. – icktoofay
@icktoofay는 말했습니다. 네트워크 한계를 맞추는 것이 아니라고 확신합니까? 이것이 서버 응답 시간 문제라면'multiprocessing.Pool'을 통해 이미지를 가져 와서 몇 번의 동시 다운로드를 시도 할 수 있습니다. – katrielalex