大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
这篇文章主要介绍了python3爬虫使用多线程运算是不是会比较快,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
创新互联公司是一家专业提供东乃企业网站建设,专注与成都网站建设、成都做网站、html5、小程序制作等业务。10年已为东乃众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
多线程存在GIL(global interpret lock)。为了实现多线程功能,程序把线程锁住,然后锁住了之后,只有唯一一个线程运算。Python只能够让线程在同一时间运算一个东西。在不停切换,看起来是多线程的。但实际上不是。
import threading from queue import Queue import copy import time def job(lists, q): res = sum(lists) q.put(res) def multi_theading(lists): q = Queue() threads = [] for i in range(4): t = threading.Thread(target=job, args=(copy.copy(lists), q), name = 'T%i'%i) t.start() threads.append(t) [t.join() for i in threads] total = 0 for _ in range(4): total += q.get() print(total) def normal(lists): # 完全不用多线程 total = sum(lists) print(total) if __name__ == '__main__': lists = list(range(1000000)) s_t = time.time() normal(lists*4) print('Normal : ', time.time() - s_t) s_t = time.time() multi_theading(lists) print('multi_threading : ', time.time() - s_t)
运行结果
1999998000000 Normal : 0.1705458164215088 1999998000000 multi_threading : 0.14860320091247559
不用多线程是 0.1705秒;用了多线程仅仅是稍微快了一点。
感谢你能够认真阅读完这篇文章,希望小编分享python3爬虫使用多线程运算是不是会比较快内容对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,遇到问题就找创新互联,详细的解决方法等着你来学习!