线程和队列:小练习

# __author: "ZXYang"
# date: 2020/12/20


"""
列出100个url地址(假设请求每个地址需要0.5秒)请设计程序,一个程序,访问地址列表中的url,使用四个线程发送这100个请求,
计算总时间!

"""

import time
import queue
from threading import Thread


def decorator(func):
def wrapper(*args, **kwargs):
s_time = time.time()
func(*args, **kwargs)
e_time = time.time()
print("耗费时间:{}".format(e_time - s_time))

return wrapper


q_url = queue.Queue()

for i in range(100):
q_url.put("http://www.baidu.com/--{}".format(i))


class MyThread(Thread):
def run(self):
while not q_url.empty():
url = q_url.get()
print(F'{self}发送请求{url}')
time.sleep(0.5)
q_url.task_done()


@decorator
def main():
for k in range(4):
t = MyThread()
t.start()

q_url.join()


main()

posted @ 2020-12-20 21:26  zxy_ang  阅读(94)  评论(0)    收藏  举报