python - 使用 Python 生成多个进程

标签 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()

输出:

4
12554
12554
12554

最佳答案

Process 类需要一个可调用对象作为其目标。

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

只需更改以下内容:

mp.Process(target=pri())

与:

mp.Process(target=pri)

关于python - 使用 Python 生成多个进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46755640/

相关文章:

python - 使用 Python 和 lxml 从 HTML 中删除类属性

python3 非法指令(核心转储)

python - 我可以使用池回调实现多处理计数器吗?

python - 如何在生成的线程中捕获内存错误?

python - 如何从 multiprocessing.queue 中的 Process 释放内存?

java - ReSTLet 不支持 POST 请求中的 JSON

python - all() 为同一个表达式返回不同的值

python - 如何运行多个函数以并行返回各自的列表

assembly - 在不同处理器(x86程序集)上运行代码

python - 在unix中只有一个进程打印,多处理python