Live class: Threads and processes in Python by Reuven M. Lerner