import hashlib from threading import Thread import sys BUFFER_SIZE = -1 class MD5File(Thread): def __init__(self, filename): Thread.__init__(self) self.filename = filename self.md5 = None def run(self): hash = hashlib.md5() with open(self.filename, 'rb') as fp: while True: data = fp.read(BUFFER_SIZE) if not len(data): break hash.update(data) print("%s %s" % (hash.hexdigest(), self.filename)) def main(): threads = [] for filename in sys.argv[1:]: thread = MD5File(filename) thread.start() threads.append(thread) for thread in threads: thread.join() if __name__ == "__main__": main()