gpt4 book ai didi

python - 将 100% 的内核与多处理模块一起使用

转载 作者:IT老高 更新时间:2023-10-28 20:38:17 26 4
gpt4 key购买 nike

我有两段代码用于了解 Python 3.1 中的多处理。我的目标是使用 100% 的所有可用处理器。但是,这里的代码片段在所有处理器上仅达到 30% - 50%。

无论如何“强制”python 100% 使用?操作系统(Windows 7、64 位)是否限制了 Python 对处理器的访问?当下面的代码片段正在运行时,我打开任务管理器并观察处理器的峰值,但从未达到并保持 100%。除此之外,我还可以看到在此过程中创建和销毁了多个 python.exe 进程。这些过程与处理器有什么关系?例如,如果我生成 4 个进程,则每个进程都没有使用它自己的核心。相反,这些进程使用的是什么?他们是否共享所有内核?如果是这样,是操作系统强制进程共享内核吗?

代码片段 1

import multiprocessing

def worker():
#worker function
print ('Worker')
x = 0
while x < 1000:
print(x)
x += 1
return

if __name__ == '__main__':
jobs = []
for i in range(50):
p = multiprocessing.Process(target=worker)
jobs.append(p)
p.start()

代码片段 2

from multiprocessing import Process, Lock

def f(l, i):
l.acquire()
print('worker ', i)
x = 0
while x < 1000:
print(x)
x += 1
l.release()

if __name__ == '__main__':
lock = Lock()
for num in range(50):
Process(target=f, args=(lock, num)).start()

最佳答案

要使用 100% 的所有内核,请不要创建和销毁新进程。

为每个核心创建几个进程并将它们与管道链接。

在操作系统级别,所有流水线进程同时运行。

你写的越少(你委托(delegate)给操作系统的越多)你就越有可能使用尽可能多的资源。

python p1.py | python p2.py | python p3.py | python p4.py ...

将最大限度地利用您的 CPU。

关于python - 将 100% 的内核与多处理模块一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com