首页 > 解决方案 > Python 3 Multiprocessing - 我应该使用多少个进程?

问题描述

我有一个运行 8 个进程的简单程序,它通过使用多处理显着减少了脚本运行时间,但是,我不确定应该放置多少进程才能最大限度地提高 CPU 利用率。目前我的 cpu 是 6 个核心,只有 1 个物理 cpu,因为它是一个 VPS。:

def spider1():
def spider2():
def spider3():
def spider4():
def spider5():
def spider6():
def spider7():
def spider8():
if __name__ == '__main__':
    p1 = multiprocessing.Process(target=spider1,)
    p2 = multiprocessing.Process(target=spider2,)
    p3 = multiprocessing.Process(target=spider3,)
    p4 = multiprocessing.Process(target=spider4, )
    p5 = multiprocessing.Process(target=spider5, )
    p6 = multiprocessing.Process(target=spider6, )
    p7 = multiprocessing.Process(target=spider7, )
    p8 = multiprocessing.Process(target=spider8, )
    p1.start()
    p2.start()
    p3.start()
    p4.start()
    p5.start()
    p6.start()
    p7.start()
    p8.start()

标签: pythonpython-3.xmultiprocessingweb-crawler

解决方案


如果要使用 cpu 的数量来计算要生成的进程数,请使用 cpu_count 来查找 cpu 的数量,

psutil.cpu_count()

但是使用 CPU 利用率来计算产生的进程数可能是一种更好的方法,要检查 CPU 利用率,您可以执行以下操作,

import psutil
psutil.cpu_times_percent(interval=1, percpu=False)

这将为您提供 cpu 使用率,例如,您可以使用该信息来决定是否要生成新进程。关注内存和交换可能是个好主意。

我认为这个答案可能很有用,限制python多处理中的总CPU使用率


推荐阅读