C++ 多进程=多个进程正在运行?

C++ 多进程=多个进程正在运行?,c++,python,windows,parallel-processing,multiprocessing,C++,Python,Windows,Parallel Processing,Multiprocessing,我对多重处理有些困惑。我是一名3年的Python程序员,但从未真正需要并行执行任务(不仅仅是异步)。但我知道,或者我认为知道的是,当使用Python中的多处理模块来实现“真正的并行性”时,新的Python.exe进程就会产生 例如,3D软件使用所有可用CPU的能力来渲染3D场景。但是我在任务管理器中没有看到多个Cinema 4D.exe进程 我上面的说法正确吗?使用多处理模块时会产生多个Python进程 我上面的说法正确吗,即多个Python进程 在使用多处理模块时是否生成 是的,没错。Pyt

我对多重处理有些困惑。我是一名3年的Python程序员,但从未真正需要并行执行任务(不仅仅是异步)。但我知道,或者我认为知道的是,当使用Python中的
多处理
模块来实现“真正的并行性”时,新的
Python.exe
进程就会产生

例如,3D软件使用所有可用CPU的能力来渲染3D场景。但是我在任务管理器中没有看到多个
Cinema 4D.exe
进程

  • 我上面的说法正确吗?使用
    多处理
    模块时会产生多个Python进程
  • <如果是,为什么是,C++应用程序如何使用没有多个进程的所有CPU?< /LI> 我上面的说法正确吗,即多个Python进程 在使用多处理模块时是否生成

    是的,没错。Python需要产生新的进程(运行额外的解释器)来并行运行。这是因为GIL()只允许每个解释器有一个执行线程

    如果是,为什么是,C++应用如何不使用所有的CPU 多进程


    嗯,在Cinema4D中大概没有GIL这样的东西——因此它可以并行执行多个线程。

    通过在同一进程中运行多个线程,也可以使用多个CPU。这不是Python
    多处理模块所做的

    Python中有一个
    threading
    模块。不幸的是,在CPython中,线程没有您想象的那么有用,因为它们都在所谓的“全局解释器锁”上竞争。因此,它们在Python中的并行性比在许多其他语言中要小得多。如果使用线程,则需要担心代码中的哪些操作将真正是并行的。如果您使用的是您不需要的流程(尽管您可能会担心其他事情,比如共享数据)


    我不知道Python的其他实现和GIL是否存在同样的问题。但是,除非您是专门为Jython/IronPython/whatever编写代码,否则CPython的限制适用于您的程序…

    通常,您会运行多个线程,而不是多个进程。运行线程而不是进程有许多优点。主要的优点是,属于进程的所有内存都在线程之间共享,您必须设置某种排序内存共享协议,以便在不同进程之间共享(部分)数据

    Python和C++都支持多读,但如别处所提到的,Python代码不能在多个处理器上运行。但是,它对于“半并行”的操作非常有用(我使用python线程读取一个文件并在声卡上播放它,同时录制并保存另一个文件,同时在串行端口上发出其他命令以控制“正在测试”的设备)

    Python模块
    multiprocessing
    实际上是用于使用多个单独的进程,这有助于“打破Python解释器锁”

    通常,如果您希望代码完全独立于系统中运行的其他任务,并且不必在进程之间共享[很多]数据,那么在单独的进程中运行会更有用-例如,在独立的进程中计算非常大的素数将是一件好事[我指的是那些有几十万或更多数字的数字]-进程在没有其他输入的情况下独立运行数小时,并且只需要少量不变的输入——“质数候选”