Python 当另一个线程等待HTTP响应时,是否会执行另一个线程?

Python 当另一个线程等待HTTP响应时,是否会执行另一个线程?,python,python-3.x,multithreading,python-requests,sleep,Python,Python 3.x,Multithreading,Python Requests,Sleep,所以我刚看完youtube上的视频。据我所知,当一个线程休眠时,程序中的其他线程可以运行。我的问题是,等待HTTP响应是否被视为“睡眠”?等待响应时是否会执行其他任务 例如: from threading import Thread from requests import get def send_request(): response = get('https://www.google.com/') return response def add(x): retu

所以我刚看完youtube上的视频。据我所知,当一个线程休眠时,程序中的其他线程可以运行。我的问题是,等待HTTP响应是否被视为“睡眠”?等待响应时是否会执行其他任务

例如:

from threading import Thread
from requests import get

def send_request():
    response = get('https://www.google.com/')
    return response

def add(x):
    return x + 2

t1 = Thread(target=send_request)
# t1.start()
t2 = Thread(target=add, args=(1,))
# t2.start()
t3 = Thread(target=add, args=(3,))
# t3.start()

t1.start()
t2.start()
t3.start()

比方说,从
get>获取响应需要100毫秒https://www.google.com/“)
是否会在100毫秒内执行
t1
t2
以获得响应?当我在之后对每个线程对象调用
.start()
时,与在每个实例化之后调用
.start()
相反,这有什么区别

感谢所有提前回复的人

等待HTTP响应是否被视为“休眠”? 等待HTTP响应很慢,CPU很可能会在响应可用之前切换到运行其他线程。所以答案是肯定的

等待响应时是否会执行其他任务? 。如果在
add
send\u request
函数中放置
print
语句,您将看到
add
将在
send\u request
之前打印其输出

当我在每个线程对象上调用
.start()
时,与每次实例化后调用
.start()
相比,有什么区别?
实际上没有什么区别。当线程启动时(使用
start()
),它被设置为与主程序的线程同时运行。主线程也可以启动其他线程,它们也将同时运行。

其他线程将在等待响应期间运行。什么时候叫“开始”并不重要。每个线程执行的精确顺序和时间以及执行时间无论如何都是不可预测的。