小编Ggg*_*ggg的帖子

在多处理模块中使用100%的核心

我有两段代码,我用它来学习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()
Run Code Online (Sandbox Code Playgroud)

代码段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, …
Run Code Online (Sandbox Code Playgroud)

python multiprocessing python-3.x

44
推荐指数
4
解决办法
7万
查看次数

标签 统计

multiprocessing ×1

python ×1

python-3.x ×1