使用 Python 生成多个进程

Rod*_*der 3 python multiprocessing python-multiprocessing

之前我尝试使用python中的threading模块来创建多个线程。然后我了解了GIL以及它如何不允许在一台机器上利用多个 CPU 内核。所以现在我正在尝试进行多处理(我并不严格需要单独的线程)。

这是我编写的示例代码,用于查看是否正在创建不同的进程。但是从下面的输出中可以看出,我每次都得到相同的进程 ID。所以没有创建多个进程。我错过了什么?

import multiprocessing as mp
import os

def pri():
    print(os.getpid())

if __name__=='__main__':

    # Checking number of CPU cores
    print(mp.cpu_count())

    processes=[mp.Process(target=pri()) for x in range(1,4)]

    for p in processes:
        p.start()

    for p in processes:
        p.join()
Run Code Online (Sandbox Code Playgroud)

输出:

4
12554
12554
12554
Run Code Online (Sandbox Code Playgroud)

nox*_*fox 5

本Process类需要调用作为其目标。

您不是在单独的进程中运行该函数,而是调用它并将其结果(None在本例中)传递给Process类。

只需更改以下内容:

mp.Process(target=pri())
Run Code Online (Sandbox Code Playgroud)

和:

mp.Process(target=pri)
Run Code Online (Sandbox Code Playgroud)