Thumbnail generator
Let's start our discussion of multi-threading in Python with the example of a program used to generate thumbnails of image URLs.
In the example, we are using Pillow, a fork of the Python Imaging Library (PIL) to perform this operation:
# thumbnail_converter.py
from PIL import Image
import urllib.request
def thumbnail_image(url, size=(64, 64), format='.png'):
""" Save thumbnail of an image URL """
im = Image.open(urllib.request.urlopen(url))
# filename is last part of the URL minus extension + '.format'
pieces = url.split('/')
filename = ''.join((pieces[-2],'_',pieces[-1].split('.')[0],'_thumb',format))
im.thumbnail(size, Image.ANTIALIAS)
im.save(filename)
print('Saved',filename)The preceding code works very well for single URLs.
Let's say we want to convert five image URLs to their thumbnails:
img_urls = ['https...