python3爬虫使用多线程运算是不是会比较快-创新互联

这篇文章主要介绍了python3爬虫使用多线程运算是不是会比较快,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

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爬虫使用多线程运算是不是会比较快内容对大家有帮助,同时也希望大家多多支持创新互联网站建设公司,,关注创新互联行业资讯频道,遇到问题就找创新互联网站建设公司,,详细的解决方法等着你来学习!


分享题目:python3爬虫使用多线程运算是不是会比较快-创新互联
网站链接:http://myzitong.com/article/dgjsed.html