多处理=多个进程在运行?

Nik*_*s R 2 c++ python windows parallel-processing multiprocessing

我对多处理感到有些困惑.我是一名3年的Python程序员,但从来没有真正需要并行执行任务(不仅仅是异步).但我所知道或者想知道的是,当multiprocessing在Python中使用模块实现"真正的并行性"时,python.exe会产生新的进程!

Cinema 4D这样的3D软件使用所有可用CPU的功能来渲染3D场景.但我Cinema 4D.exe在任务管理器中看不到多个进程.

  1. 我是否正确使用上述语句,在使用multiprocessing模块时会产生多个Python进程?
  2. 如果是这样,为什么会这样,C++应用程序如何在没有多个进程的情况下使用所有CPU?

Ste*_*sop 6

通过在同一进程中运行多个线程,也可以使用多个CPU.这不是Python multiprocessing模块的功能.

threadingPython中有一个模块.不幸的是,在CPython中,线程没有你想象的那么有用,因为它们都在争夺所谓的"全局解释器锁".因此,它们在Python中的并行性远远低于许多其他语言.如果使用线程,则需要担心代码中的哪些操作才真正并行.如果您使用流程,则不会(尽管您可能会担心其他事情,例如共享数据).

我不知道Python的替代实现是否与GIL具有相同的问题.但除非你专门为Jython/IronPython编写代码,否则CPython的限制适用于你的程序......