各位好,今天咱们来聊聊Python里的两个重量级选手:multiprocessing(多进程)和threading(多线程)。这俩哥们儿都能让你的程序“同时”干活,但擅长的领域却大不相同。选错了,轻则效率打折,重则适得其反。所以,咱们得摸清它们的脾气,才能让它们各司其职,把活儿干得漂漂亮亮的。 开场白:别被“并发”忽悠了 先来个小概念澄清一下。很多人把“并发”(concurrency)和“并行”(parallelism)混为一谈,以为都是“一起干活”。其实不然。 并发: 就像一个人同时处理多项任务。你一边回微信,一边听歌,一边还要想着晚上吃啥。表面上看起来你在同时干三件事,但实际上你的大脑是在快速切换,轮流处理。 并行: 就像几个人同时干活。你、你媳妇儿、你老妈,三个人同时包饺子,那就是并行。 threading 实现的是并发,而 multiprocessing 才能实现真正的并行(在多核 CPU 的情况下)。记住这一点,是咱们后续讨论的基础。 第一回合:threading,I/O 密集型任务的救星 threading 是Python自带的模块,用来创建线程。线程是轻量级的执行单元,多 …
继续阅读“Python高级技术之:`multiprocessing`与`threading`:在`CPU`密集型和`I/O`密集型任务中的选型。”