What is the difference between a process and a thread, and how do languages like Python handle multi-threading?