python笔记13-多线程实战篇(tomorrow),,安装1.tomorr


安装

1.tomorrow安装,用pip可以直接安装

pip install tomorrow

单线程

1.以下案例是单线程时候跑的情况,在下载图片的时候很耗时。

# coding:utf-8from bs4 import BeautifulSoupimport requestsimport osimport time# 当前脚本所在的目录cur_path = os.path.dirname(os.path.realpath(__file__))def get_img_urls():    r = requests.get("http://699pic.com/sousuo-218808-13-1.html")    fengjing = r.content    soup = BeautifulSoup(fengjing, "html.parser")    # 找出所有的标签    images = soup.find_all(class_="lazy")    return imagesdef save_img(imgUrl):    try:        jpg_rl = imgUrl["data-original"]        title = imgUrl["title"]        # print(title)        # print(jpg_rl)        # print("")        # 判断是否有jpg文件夹,不存在创建一个        save_file = os.path.join(cur_path, "jpg")        if not os.path.exists(save_file): os.makedirs(save_file)        with open(os.path.join(save_file, title+‘.jpg‘), "wb") as f:            f.write(requests.get(jpg_rl).content)    except:        passif __name__ == "__main__":    t1 = time.time()    image_ulrs = get_img_urls()    for i in image_ulrs:        save_img(i)    t2 = time.time()    print("总耗时:%.2f 秒"%(t2-t1))

运行结果:

耗时:4.27 秒

使用多线程tomorrow

1.一行代码搞定多线程,在函数上加个@threads(5),括号里面代码线程的数量,数字越大,运行的速度越快

# coding:utf-8from bs4 import BeautifulSoupimport requestsimport osimport timefrom tomorrow import threads# 当前脚本所在的目录cur_path = os.path.dirname(os.path.realpath(__file__))def get_img_urls():    r = requests.get("http://699pic.com/sousuo-218808-13-1.html")    fengjing = r.content    soup = BeautifulSoup(fengjing, "html.parser")    # 找出所有的标签    images = soup.find_all(class_="lazy")    return images@threads(5)def save_img(imgUrl):    try:        jpg_rl = imgUrl["data-original"]        title = imgUrl["title"]        # print(title)        # print(jpg_rl)        # print("")        # 判断是否有jpg文件夹,不存在创建一个        save_file = os.path.join(cur_path, "jpg")        if not os.path.exists(save_file): os.makedirs(save_file)        with open(os.path.join(save_file, title+‘.jpg‘), "wb") as f:            f.write(requests.get(jpg_rl).content)    except:        passif __name__ == "__main__":    t1 = time.time()    image_ulrs = get_img_urls()    for i in image_ulrs:        save_img(i)    t2 = time.time()    print("总耗时:%.2f 秒"%(t2-t1))

运行结果:

总耗时:0.24 秒

参考github案例:Tomorrow

python笔记13-多线程实战篇(tomorrow)

评论关闭