There is more to threading than can be discussed in the space of an article like this; it is a subject for complete books. One thing I haven't discussed is the infamous GIL, or Global Interpreter Lock, a construct that makes multithreaded Python applications ever so much more robust, but also prohibits access to Python objects from more than one thread at a time. In effect, all access to Python objects is serialized through this construct.
Even so, I hope I have given you reason to consider using threading in your applications. Which of the possible libraries you should use depends on your requirements. If you're using a PyQt GUI anyway and don't plan on separating the GUI from the application, then QThread and friends are a fast and easy-to-program choice. On the other hand, the threading module is a Python standard.