What are the differences between multiprocessing and multithreading in Python, and when would you use each in production?