这篇文章主要介绍了python3爬虫使用多线程运算是不是会比较快,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。
多线程存在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爬虫使用多线程运算是不是会比较快内容对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,遇到问题就找亿速云,详细的解决方法等着你来学习!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.py.cn/jishu/jichu/21191.html