所以我刚看完YouTube上的this视频。据我了解,一个线程休眠时,程序中的其他线程可以运行。我的问题是,正在等待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('https://www.google.com/')
得到响应需要100毫秒,t1
和t2
会在100毫秒内执行以获得响应吗?实例化ALL之后在每个线程对象上调用.start()
与实例化EACH之后调用.start()
时有什么区别?
感谢所有提前答复的人!
等待HTTP响应很慢,并且CPU很可能会在响应可用之前切换到运行其他线程。答案是是。
是。如果将print
语句放在add
和send_request
函数中,则会看到add
将在send_request
之前打印其输出。
.start()
相反,当我在每个线程对象上调用.start()
时有什么区别?几乎没有无差异。当线程启动时(使用start()
),它被设置为与主程序的线程并发运行。主线程也可以启动其他线程,它们也可以同时运行。