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

企业网站建设对网络营销有哪些影响南昌seo优化公司

企业网站建设对网络营销有哪些影响,南昌seo优化公司,厦门网站建设培训,网站建设平台协议书模板下载目录 一、知识点二、多线程语法GIL单线程多线程单线程多线程 最后的惊喜 一、知识点 线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。线程自己不拥有…

目录

  • 一、知识点
    • 二、多线程语法
      • GIL
        • 单线程
        • 多线程
          • 单线程
          • 多线程
      • 最后的惊喜

一、知识点

线程(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(target=task, args=(num,))t.start()

利用Thread创建线程,target参数接收函数名,args参数接收函数的参数,start方法启动线程。

这里还需要讲解一下join方法,他的作用是让主线程等待,直到该子线程结束。我们来看看加该方法和不加该方法,最终的结果是怎么样的。

import threadingdef task():num = 0for i in range(10000000):num += 1print(num)t = threading.Thread(target=task)
t.start()
print('end')# end
# 10000000import threadingdef task():num = 0for i in range(10000000):num += 1print(num)t = threading.Thread(target=task)
t.start()
t.join()
print('end')# 10000000
# end

GIL

在说概念之前,我们还是以上面的代码为例,分别求单线程和多线程代码运行的时间。

单线程

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(target=task, 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(target=task, args=(url,))t.start()ts.append(t)for t in ts:t.join()end = time.time()
print(end - start)# 3.005527973175049

这时候我们就能看到多线程的优势了,虽然多线程只是在各线程来回切换,但是可以让IO堵塞的时间切换到其他线程做其他的任务,很适合爬虫或者文件的操作。

最后的惊喜

最后这里有准备一些Python的学习资料需要的自取哈

http://www.hengruixuexiao.com/news/14902.html

相关文章:

  • 图案设计网站大全百度推广有效果吗?
  • 做图有什么网站星巴克网络营销案例分析
  • 做门户网站用什么模板好线上推广宣传方式有哪些
  • 网站备案收费十堰seo排名公司
  • 东莞网站设计公司淘宝淘宝关键词排名怎么查询
  • PHP+MySQL网站开发全程实例如何设计网站的首页
  • 做算命网站犯法吗百度安装
  • 昆明 做网站 vr百度seo关键词优化电话
  • 成都新线加做网站陕西企业网站建设
  • wordpress怎么收费青岛seo整站优化招商电话
  • 网络开发培训吉林seo推广
  • 东莞微信网站建设更好百度云网盘免费资源
  • 网站建设分金手指排名十二资源最多的磁力搜索引擎
  • 网站建设需要的文案网站优化有哪些类型
  • 网站上的链接怎么做的交换友情链接的要求有
  • 网站开发技术支持百度推广后台
  • 整站优化加盟百度搜索下载app
  • 网站建设看什么书360搜索推广官网
  • 日本人做的摇滚网站国内免费二级域名建站
  • pb 做网站企业员工培训课程有哪些
  • 上海网站建设就q479185700顶上网站提交百度收录
  • 一般做兼职在哪个网站品牌整合营销案例
  • 高端建站需要什么条件月嫂免费政府培训中心
  • 网站怎样绕过360认证合肥网络推广软件
  • 中国做外贸网站有哪些楚雄百度推广电话
  • vs做网站通过e浏览器网站页面优化包括
  • 网站建设与管理用什么软件有哪些内容免费网页在线客服系统
  • 新乡发布最新通告长沙seo优化哪家好
  • 最先进的深圳网站建设seo是干什么的
  • 网站建设主题上海搜索引擎优化seo