"""
一个列表中有100个url地址,每个地址请求一次,请设计程序一个程序,
使用4个线程去发送这 100个请求(假设请求每个地址需要0.5秒,请求的代码用time.sleep(0.5)代替),
计算一共需要多长时间计算出总耗时!
"""
import time
from threading import Thread, Lock
# 生成
url_list = [f"https://www.baidu.com/{i}/" for i in range(100, 0, -1)]
lock = Lock()
def work():
while url_list:
# 上锁
lock.acquire()
# 从列表中获取一个数据
url = url_list.pop()
# 解锁
lock.release()
print(url)
time.sleep(0.5) # 代替发送请求的代码
def main(n):
"""
:param n: 线程数
:return:
"""
start_time = time.time()
ts = []
for i in range(n):
t1 = Thread(target=work)
t1.start()
ts.append(t1)
for t in ts:
t.join()
end_time = time.time()
print('执行时间为:', end_time - start_time)
if __name__ == '__main__':
main(4)
03-31
6481
