当前位置: 首页 > news >正文

企业级网站开发seo职业培训学校

企业级网站开发,seo职业培训学校,wordpress媒体库在哪个文件夹,会展网站代码源码单线程和多线程进行数据抓取结果还是大有不同的#xff0c;但是要值得注意的事#xff0c;如果多线程没调配好可能连单线程的效率都比不上。本次就和大家一起聊一聊单线程多线程的一些需要注意的事项。 知识点 线程#xff08;Thread#xff09;也叫轻量级进程#xff0…单线程和多线程进行数据抓取结果还是大有不同的但是要值得注意的事如果多线程没调配好可能连单线程的效率都比不上。本次就和大家一起聊一聊单线程多线程的一些需要注意的事项。 知识点 线程Thread也叫轻量级进程是操作系统能够进行运算调度的最小单位它被包含在进程之中是进程中的实际运作单位。线程自己不拥有系统资源只拥有一点在运行中必不可少的资源但它可与同属的一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程同一进程中的多个线程之间可以并发执行。 多线程语法 在Python中实现多线程编程需要用到的就是threading模块中的Thread类我们来看看最简单的语法我们首先来一个简单的函数。 def task(num):count 0for i in range(num):count 1print(count)nums [100, 1000, 10000] for num in nums:task(num)# 100 #1000 #10000我们用三个子线程分别计算。 import threadingdef task(num):count 0for i in range(num):count 1print(count)nums [100, 1000, 10000] for num in nums:t threading.Thread(targettask, args(num,))t.start()利用Thread创建线程target参数接收函数名args参数接收函数的参数start方法启动线程。 这里还需要讲解一下join方法他的作用是让主线程等待直到该子线程结束。我们来看看加该方法和不加该方法最终的结果是怎么样的。 import threadingdef task():num 0for i in range(10000000):num 1print(num)t threading.Thread(targettask) t.start() print(end)# end # 10000000import threadingdef task():num 0for i in range(10000000):num 1print(num)t threading.Thread(targettask) t.start() t.join() print(end)# 10000000 # endGIL 在说概念之前我们还是以上面的代码为例分别求单线程和多线程代码运行的时间。 单线程 import timedef task(num):count 0for i in range(num):count 1print(count)nums [1000000, 100000000, 1000000000] start time.time() for num in nums:task(num) end time.time() print(end - start)# 50.44705629348755多线程 import threading import timedef task(num):count 0for i in range(num):count 1print(count)nums [1000000, 100000000, 1000000000] ts [] start time.time()for num in nums:t threading.Thread(targettask, args(num,))t.start()ts.append(t)for t in ts:t.join()end time.time() print(end - start)# 55.022353172302246你会发现多线程比单线程花费的时间还要更多这是因为GIL的原因。 GIL的全称是Global Interpreter Lock全局解释器锁Python最初的设计理念在于为了解决多线程之间数据完整性和状态同步的问题设计为在任意时刻只能由一个线程在解释器中运行。因此Python中的多线程是表面上的多线程同一时刻只有一个线程不是真正的多线程。 但是如果是因为GIL的原因就说多线程无用是不对的对于IO密集的程序多线程是要比单线程快的。我们举一个简单的爬虫案例。 单线程 import timedef task(url):s url.split(_)[-1]time.sleep(int(s)) #这里模拟请求等待urls [url_1, url_2, url_3] start time.time() for url in urls:task(url) end time.time() print(end - start)# 6.013520002365112多线程 import threading import timedef task(url):s url.split(_)[-1]time.sleep(int(s))ts [] urls [url_1, url_2, url_3] start time.time()for url in urls:t threading.Thread(targettask, args(url,))t.start()ts.append(t)for t in ts:t.join()end time.time() print(end - start)# 3.005527973175049这时候我们就能看到多线程的优势了虽然多线程只是在各线程来回切换但是可以让IO堵塞的时间切换到其他线程做其他的任务很适合爬虫或者文件的操作。
http://www.w-s-a.com/news/416241/

相关文章:

  • 做哪种网站赚钱苏州住房城乡建设部网站
  • 镇江做网站学编程学哪一种比较好
  • 华美天一建筑公司网站赚钱做任务的网站有哪些
  • asp网站打开速度慢家乡网页设计教程
  • 网站 设计 深圳书店网站的建设
  • 北京网络营销推广培训哪家好南宁软件优化网站建设
  • flash网站引导页仓库管理系统源码
  • 济南网站制作公司排名营销型网站管理系统
  • 公司网站设计要多少钱用什么做网站的访问量统计
  • 湖北省住房和城乡建设厅门户网站沈阳网络平台推广公司
  • 河南平台网站建设公司网站如何提高转化率
  • 网站及推广wordpress 分享主题
  • 房产网站有哪些如何自己建一个微网站
  • 青岛市黄岛区城市建设局网站手机域名访问网站怎么进入
  • 网站模板 双语河南省建设人才信息网官网
  • 网站建设备案优化之看邹城网站开发
  • 网站方案书图书馆网站建设公司
  • 公司取名网免费版在线网站优化公司
  • dw怎么做秋季运动会网站九江集团网站建设
  • 响应式网站建设服务商wordpress 非小工具形式 微博秀
  • 网站安全检测漏洞扫描风险等级分布建设一个网站步骤
  • 摄影网站的意义开发企业小程序公司
  • 龙岩网站设计招聘信息网上免费logo设计
  • 高端定制网站开发建站教程详解网站共享备案可以申请支付接口
  • 做房产网站接不到电话企业推广宣传方式
  • 网站建设费用不用摊销下一页p30
  • 北京 工业网站建设公司国外服务器公司有哪些
  • 怎样局域网站建设盈利网站
  • 公司做网站广告语济南建网站价格消费品展
  • 建德网站网站建设规划设计书