linux os.fork()将在哪个CPU核心上运行子进程?

bnl4lu3b  于 2023-06-05  发布在  Linux
关注(0)|答案(1)|浏览(216)

我最近学习了如何使用os.fork(),它是多处理背后的基本思想。
据我所知,这是使用Python时使用多个核心的唯一方法,因为如果我执行线程,全局解释器锁(GIL)将通过强制一次只运行一个线程来阻止我使用这些CPU核心。
我不明白的是,我如何确保os.fork()创建的新进程可以以某种方式保证运行在另一个CPU核心上,而不是父进程上?或者这种担心在某种程度上是不相关的?

ljo96ir5

ljo96ir51#

最近我一直在用Python进行深度学习,我发现Python完全不适合科学计算。回到你的问题,linux上的python默认使用fork来处理多个进程,但根据我的实验,在一台有32个逻辑cpu的机器上,fork模式将永远只使用2个逻辑核心。不管你有多少工人。当你切换到spawn时,一切都改变了,所有的核心都在运行。但是,spawn有很多限制。在并行计算方面,Python是一团糟
更新:它是pytorch的bug。即使是这样一个著名的图书馆也不能完全信任。

相关问题