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

英铭网站建设网站推广广告

英铭网站建设,网站推广广告,企业网站数据库表设计,重庆做网站开发的集中一、多线程 threading模块 # 线程和进程 1.线程是最小的调度单位 2.进程是最小的管理单元 3.一个进程必须至少一个线程 4.没有线程,进程也就不复存在 # 多线程特点: # python线程特点 #线程的并发是利用cpu上下文的切换(是并发&#xff0c…

一、多线程  threading模块

# 线程和进程

'''

1.线程是最小的调度单位

2.进程是最小的管理单元

3.一个进程必须至少一个线程

4.没有线程,进程也就不复存在

'''

 

 

# 多线程特点:

# python线程特点

#线程的并发是利用cpu上下文的切换(是并发,不是并行)

#多线程执行的顺序是无序的

# def test1(n):
#     time.sleep(1)
#     print('task', n)
#
# # t1 = threading.Thread(target=test1,args=(1,))
# # t1.start()
#
# for i in range(10):
#     t = threading.Thread(target=test1,args=('t-%s' % i,))#args:传递的参数!
#     t.start()

#多线程共享全局变量,但是在使用之前要声名

 

# g = 0
# def test1():
#     global g
#     for i in range(10):
#         g += 1
#     print(g)
# def test2():
#     global g
#     for i in range(10):
#         g += 1
#     print(g)
#
# t1 = threading.Thread(target=test1)  #target=test1:建立线程时的调用对象是test1
# t2 = threading.Thread(target=test2)
# t1.start()
# t2.start()

 

#线程是继承在进程里的,没有进程就没有线程

#GIL全局解释器锁:

当运行如下代码时,运行结果会出现错误,

import threading
lock = threading.Lock()
global_num = 0
def test1():global global_numfor i in range(1000000):global_num += 1def test2():global global_numfor i in range(1000000):global_num += 1t1 = threading.Thread(target=test1)
t2 = threading.Thread(target=test2)
t1.start()
t2.start()
t1.join()
t2.join()
print(global_num)

这是因为:

1,主线程运行时间太短,调用函数的t1,t2两个线程,还没有运行完,主线程就已经运行结束了

2.有GIL全局解释器存在的原因,导致错误

 

 

# lock = threading.Lock()
# global_num = 0
# def test1():
#     global global_num
#     lock.acquire()
#     for i in range(1000000):
#         global_num += 1
#     lock.release()
# def test2():
#     global global_num
#     lock.acquire()
#     for i in range(1000000):
#         global_num += 1
#     lock.release()
# t1 = threading.Thread(target=test1)
# t2 = threading.Thread(target=test2)
# t1.start()
# t2.start()
# t1.join()
# t2.join()
# print(global_num)

解决的方法:

1.要使用join方法,以保证各个进程运行完

2.申请一个用户锁,将代码锁定,等到锁定的代码执行完毕之后再释放GIL全局解释器锁

#在IO密集型的代码里,适合用多线程

 

二、多进程  multiprocessing模块

#一个程序运行起来之后,代码+用到的资源称之为进程,它是操作系统分配资源的基本单位,不仅可以通过线程完成多任务,进程也是可以的

#进程之间是相互独立的

#cpu密集的时候适合用多进程

import multiprocessing
import time
# g = 0
# def test1(n):
#     time.sleep(50)
#     global g
#     for i in range(10):
#         g += 1
#     print(g)
# def test2(n):
#     time.sleep(50)
#     global g
#     for i in range(10):
#         g += 1
#     print(g)
# # test1(1)
# # test2(2)
# if __name__ == '__main__':
#     p1 = multiprocessing.Process(target=test1,args=(1,))
#     p2 = multiprocessing.Process(target=test2,args=(2,))
#     p1.start()
#     p2.start()#进程池
# import multiprocessing
# from multiprocessing import Pool
# import time
# import threading
# g_num = 0
# def test1(n):
#     for i in range(n):
#         time.sleep(1)
#         print('test1', i)
#
# def test2(n):
#     for i in range(n):
#         time.sleep(1)
#         print('test2', i)
# def test3(n):
#     for i in range(n):
#         time.sleep(1)
#         print('test3', i)
#
# def test4(n):
#     for i in range(n):
#         time.sleep(1)
#         print('test4', i)
#
# if __name__ == '__main__':
#     pool = Pool(1)#把进程声明出来,括号里不写东西说明无限制,如果写数字,就是最大的进程数
#     pool.apply_async(test1,(10,))#用pool去调用函数test1,参数为10格式为(10,)
#     pool.apply_async(test2,(10,))#用pool去调用函数test2,参数为10格式为(10,)
#     pool.apply_async(test3,(10,))#用pool去调用函数test3,参数为10格式为(10,)
#     pool.apply_async(test4,(10,))#用pool去调用函数test4,参数为10格式为(10,)
#     pool.close()  # close必须在join的前面
#     pool.join()

 

  

转载于:https://www.cnblogs.com/leeeel/p/10815785.html

http://www.lbrq.cn/news/2513611.html

相关文章:

  • web网站开发标题字体加粗百度快速收录工具
  • 网站建设分配人员方案营业推广是什么意思
  • 做网站都要买服务器吗广告网
  • 运维难还是开发难免费网站seo诊断
  • 有没有做海报的网站推荐泉州seo优化
  • 建材建设网站google海外版
  • php站点搭建短视频推广app
  • 上海建设网站定做网站创建的流程是什么
  • 在线网站设计关键词分布中对seo有危害的
  • 合肥做网站价格北京seo优化排名
  • 牛b插网站建设网站推广计划方案
  • 专业的网页设计和网站制作公司凡科建站官网免费注册
  • 黄骅海边旅游景区推广关键词优化
  • 在线网站建设培训免费推广网站大全下载
  • 好看的网站页面设计seocms
  • 长沙做个网站多少钱域名关键词查询
  • 礼品网站建设平台推广引流
  • 网站权重什么意思站长工具排行榜
  • 代练中介网站有得做吗腾讯中国联通
  • 学校网站的图片轮播怎么做北京互联网公司有哪些
  • 为什么打不开建设银行网站成都网络推广外包公司哪家好
  • 广西seo网站seo研究中心晴天
  • 网站建设与维护教学视频沈阳网站建设
  • 竭诚网络网站建设价格谷歌seo优化推广
  • 企业建设电子商务网站的预期收益本地网络seo公司
  • 网站免费php空间申请刚刚刚刚刚刚好痛
  • 临潼区建设局网站现在什么网络推广好
  • 做外贸做什么英文网站好江北seo页面优化公司
  • 有哪些网站可以做海报在线视频观看免费视频22
  • 做个网站每年都要交域名费吗百度免费资源网站
  • 数据结构——图(二、图的存储和基本操作)
  • 数据结构 | 队列:从概念到实战
  • JAVA后端开发——“全量同步”和“增量同步”
  • 沪深L2逐笔十档委托队列分时Tick历史数据分析处理
  • ArkTS 模块通信全解析:用事件总线实现页面消息联动
  • 工业控制系统安全之 Modbus 协议中间人攻击(MITM)分析与防范