首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3多进程-我应该使用多少进程?

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

Stack Overflow用户
提问于 2018-09-13 18:02:37
回答 2查看 3.4K关注 0票数 5

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

代码语言:javascript
复制
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()
EN

回答 2

Stack Overflow用户

发布于 2018-09-13 18:16:08

如果您想使用cpu数来计算要派生的进程数,请使用cpu_count查找cpu数,

代码语言:javascript
复制
psutil.cpu_count()

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

代码语言:javascript
复制
import psutil
psutil.cpu_times_percent(interval=1, percpu=False)

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

我认为这个答案可能会对你有用,Limit total CPU usage in python multiprocessing

票数 5
EN

Stack Overflow用户

发布于 2018-09-13 18:44:43

对于推荐,你必须提供更多关于你的用例的信息。多处理和相关的通信原语(如队列)引入了开销。此外,使用VPS对这样一个问题进行推理会引入许多变量,这些变量可能会严重扭曲实验结果。

如果你还没有了解并发性和并行性,already.

  • Generally: IO是一个很慢的操作,并且是决定决定的变量。

  • 我会使用这个非常低的核心数经验法则:用N核的数量乘以一个从1.0开始的因子,这个因子随着独立IO负载的增加而增加,随着任务的依赖IO负载而逐渐减少到1/N

这意味着,例如,如果您的并行任务争夺有限的资源,如旋转的硬盘,请将并行性(锁定成本)和并发性(任务切换成本按寻道时间)降低到1。没有IO为您留下可在完全刻录时使用的内核数量。对于独立的IO,此规则将导致您增加并行运行的任务数量,因此当一个任务运行到IO操作中时,CPU核心可以切换到另一个任务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52311339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档