""" 一个列表中有100个url地址(每个请求0.5秒),设计一个程序,获取列表的url地址 使用5个线程去发送这100个请求,计算出总共请求的时间 """ import queue import time from multiprocessing.pool import ThreadPool def download(q: queue.Queue): while not q.empty(): print(q.get()) # 获取下载的url地址 time.sleep(0.5) q.task_done() # 这个任务做完了 # 统计时间装饰器 def calc_time(func): def wrap(*args, **kwargs): start = time.time() func(*args, **kwargs) end = time.time() print(f"共花费时间{(end - start):.2f}秒") # 将函数本身返回 return wrap @calc_time def main(): # 创建队列 q = queue.Queue() for i in range(100): # 在队列中放入(put)值 q.put(f"http://www.qushi.com/page={i}") pool = ThreadPool(5) # 5个线程 pool.apply_async(download, args=(q,)) # pool中的多个线程异步调用指定函数:download q.join() # 等待所有的任务完成 print("任务完成") if __name__ == '__main__': main()
标签:__,队列,def,time,download,多线程,装饰,pool From: https://www.cnblogs.com/python-test001/p/18234857