另一个线程会在另一个线程等待 HTTP 响应时执行吗?

Will another thread execute while another thread waits for an HTTP response?

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

例如:

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('https://www.google.com/') 获得响应需要 100 毫秒,t1t2 会在 100 毫秒内执行以获得响应吗?当我在实例化 ALL 之后在每个线程对象上调用 .start() 反对在 EACH[=27= 之后调用 .start() 时,它有什么区别] 实例化?

感谢所有提前回复的人!

是否考虑等待 HTTP 响应 "sleeping"?

等待 HTTP 响应很慢,CPU 很可能会在响应可用之前切换到 运行 其他线程。所以答案是.

等待响应时是否会执行其他任务?

。如果在 addsend_request 函数中放置 print 语句,您会看到 add 将在 send_request.[=18 之前打印其输出=]

在实例化 ALL 之后在每个线程对象上调用 .start() 与在实例化 EACH 之后调用 .start() 有什么区别?

实际上没有区别。当一个线程启动时(使用 start()),它被设置为 运行 与主程序的线程并发。主线程也可以启动其他线程,它们也会运行并发。