Asynchronous versus threading and multiprocessing