如何在python中确定合理的线程数?

如何在python中确定合理的线程数?,python,multithreading,python-multithreading,Python,Multithreading,Python Multithreading,我写了一个简单的脚本,应该做大量的检查。每个检查都是独立的,所以我决定将其放入多个线程中。但是我不知道脚本设置的机器速度有多快。我已经找到了非常好的util来检查目标机器的基本参数,但是我想知道是否有任何方法可以确定线程的最大可感知数量(我是指新线程开始减慢进程而不是加快进程的那一刻) 你可能会在最后一句话中找到答案。您可以测量执行时间,因为它随着线程的增加而变化。以及自适应地添加或删除(并重新获取已删除线程的作业)线程,以保留您喜欢的执行时间。如果您想获得更复杂的功能,请检查。您可以找到目标机

我写了一个简单的脚本,应该做大量的检查。每个检查都是独立的,所以我决定将其放入多个线程中。但是我不知道脚本设置的机器速度有多快。我已经找到了非常好的util来检查目标机器的基本参数,但是我想知道是否有任何方法可以确定线程的最大可感知数量(我是指新线程开始减慢进程而不是加快进程的那一刻)

你可能会在最后一句话中找到答案。您可以测量执行时间,因为它随着线程的增加而变化。以及自适应地添加或删除(并重新获取已删除线程的作业)线程,以保留您喜欢的执行时间。如果您想获得更复杂的功能,请检查。

您可以找到目标机器的核心数量

import multiprocessing

multiprocessing.cpu_count()
如果选择
多处理
来管理任务,则可以根据系统负载和
.cpu\u count()
设置
大小或工作线程数


至于你可以为你的程序选择一个合适的数字,你必须自己决定:-)

为了提高python的速度,线程不是一个非常好的主意,特别是对于cpu限制的操作。GIL可以从多个CPU中获得任何潜在的性能改进(其中#是线程速度提高的理论极限——尽管在实践中是YMMV)


对于真正独立的“检查”,您最好考虑多处理。

事实上,在我的情况下,处理器不是问题所在-每个测试中最耗时的部分是等待来自internet的响应…然后我完全不知道线程将如何帮助您。我假设在某个时刻,你会期望同时发生多个检查——在这种情况下,我的建议是正确的。