Cómo mejorar la búsqueda con os.walk y fnmatch

Estoy usandoos.walk yfnmatch con filtros para buscar en el disco duro de una PC todos los archivos de imagen. Esto funciona perfectamente bien, pero es extremadamente lento, ya que toma alrededor de 9 minutos buscar +70000 imágenes.

¿Alguna idea sobre cómo optimizar este código para correr más rápido? ¿Cualquier otra sugerencia?

Estoy usando python 2.7.2 por cierto.

import fnmatch
import os

images = ['*.jpg', '*.jpeg', '*.png', '*.tif', '*.tiff']
matches = []

for root, dirnames, filenames in os.walk("C:\\"):
    for extension in images:
        for filename in fnmatch.filter(filenames, extension):
            matches.append(os.path.join(root, filename))