Python 3 Multiprocessing - 我应该使用多少个进程?

Coo*_*ook 5 python web-crawler multiprocessing python-3.x

我有一个简单的程序来运行 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()
Run Code Online (Sandbox Code Playgroud)

Rad*_*dan 5

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

psutil.cpu_count()
Run Code Online (Sandbox Code Playgroud)

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

import psutil
psutil.cpu_times_percent(interval=1, percpu=False)
Run Code Online (Sandbox Code Playgroud)

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

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