Python provides a high level threading library that makes threading virtually painless. Generally, you should only use threads if the following is true: Sharing memory between threads is not an issue. You are not looking for the best optimized performance since threads share memory within a process. You want to be able to share objects between threads. You take precautions that threads are not working on the same object at the same time.