之前我尝试使用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/