我的问题相当简单:如果我有一段代码,其中有一个迭代 150 次的 for 循环。将其分成 3 个文件,每个文件循环迭代 50 次是不是更快?如果是这样,我是同时运行 3 个代码还是一次运行一个?另一种选择可能是multiprocessing在这 3 个文件中使用 python,但出现了同样的问题,我是一次性运行它们还是一次运行一个?
1 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
这取决于。
在 cpython 中,全局解释器锁 (GIL) 确保给定进程中一次只有 1 个线程可以运行 python 代码。如果您的循环受 CPU 限制,则在单个进程中添加线程不会加快速度。如果您的循环由于某种原因(例如从磁盘读取数据)而休眠,线程可以加速它。使用多处理,由于 GIL 是针对每个进程的,因此您可以加快处理速度。
多线程和多处理存在开销,包括启动线程/进程、向线程/进程获取数据以及返回结果的成本。根据您所做的事情,这可能比循环本身更昂贵。
因此,这个问题没有通用的答案。它高度依赖于任务。
添加回答
举报
0/150
提交
取消