另一个线程会在另一个线程等待 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 毫秒,t1
和 t2
会在 100 毫秒内执行以获得响应吗?当我在实例化 ALL 之后在每个线程对象上调用 .start()
反对在 EACH[=27= 之后调用 .start()
时,它有什么区别] 实例化?
感谢所有提前回复的人!
是否考虑等待 HTTP 响应 "sleeping"?
等待 HTTP 响应很慢,CPU 很可能会在响应可用之前切换到 运行 其他线程。所以答案是是.
等待响应时是否会执行其他任务?
是。如果在 add
和 send_request
函数中放置 print
语句,您会看到 add
将在 send_request
.[=18 之前打印其输出=]
在实例化 ALL 之后在每个线程对象上调用 .start()
与在实例化 EACH 之后调用 .start()
有什么区别?
实际上没有区别。当一个线程启动时(使用 start()
),它被设置为 运行 与主程序的线程并发。主线程也可以启动其他线程,它们也会运行并发。
所以我刚刚在 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 毫秒,t1
和 t2
会在 100 毫秒内执行以获得响应吗?当我在实例化 ALL 之后在每个线程对象上调用 .start()
反对在 EACH[=27= 之后调用 .start()
时,它有什么区别] 实例化?
感谢所有提前回复的人!
是否考虑等待 HTTP 响应 "sleeping"?
等待 HTTP 响应很慢,CPU 很可能会在响应可用之前切换到 运行 其他线程。所以答案是是.
等待响应时是否会执行其他任务?
是。如果在 add
和 send_request
函数中放置 print
语句,您会看到 add
将在 send_request
.[=18 之前打印其输出=]
在实例化 ALL 之后在每个线程对象上调用 .start()
与在实例化 EACH 之后调用 .start()
有什么区别?
实际上没有区别。当一个线程启动时(使用 start()
),它被设置为 运行 与主程序的线程并发。主线程也可以启动其他线程,它们也会运行并发。