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

广州的房地产网站建设金城武重庆森林经典台词

广州的房地产网站建设,金城武重庆森林经典台词,石家庄学设计的正规学校,东家乐装修公司简介1、 背景概述 在上篇文章中#xff0c;主要讲述了python中的socket编程的一些基本方面#xff0c;但是缺少关于锁的相关概念#xff0c;从而在这篇文章中进行补充。 由于在python中#xff0c;存在了GIL#xff0c;也就是全局解释器锁#xff0c;从而在每次进行获得cpu的…1、 背景概述 在上篇文章中主要讲述了python中的socket编程的一些基本方面但是缺少关于锁的相关概念从而在这篇文章中进行补充。 由于在python中存在了GIL也就是全局解释器锁从而在每次进行获得cpu的时候同时只有一个线程获得了cpu的运行在这个方面可以认为是线程安全的但是在线程运行的时候是共享内存的共享相同的数据信息从而这个时候python的线程就不那么安全了。 在python中要保证数据的正确性并且自己对数据进行控制对数据进行加锁并且自己释放锁。 多线程的主要目的为了提高性能与速度用在无关的方向是最好的例如在使用爬虫的时候可以使用多线程来进行爬取数据因为在这些线程之间没有需要共同操作的数据从而在这个时候利用是最好的。 如果需要操作同一份数据那么必须自己保证数据的安全性。 如果需要利用多cpu的特性那么应该使用的是多进程编程而不是多线程编程多进程编程为multiprocessing。 2、 利用锁进行同步相同的数据 直接看以下的代码 #!/usr/bin/env python import time import threadingnum 0 class MyThread(threading.Thread):def run(self):#lock.acquire()#time.sleep(1)global numnum 1print self.name set num to str(num)#lock.release()#lock threading.RLock() threads [] for i in range(10000):t MyThread()threads.append(t) for i in range(10000):threads[i].start() for i in range(10000):threads[i].join() 看以上的代码对全局变量进行一个修改从而每个线程取到的是同一份的数据从而可能造成数据的计算结果不正确从而需要用锁进行控制数据的正确性。 PS在我的机器上进行运行的时候都是正确的从而看起来好像不用锁也可以但是在有的机器上进行模拟的时候最后的计算结果不正确。 在使用锁的时候只要将注释的代码进行去掉即可使用锁。 3、 锁的类型 在python的threading模块中提供了三种锁如下所示 在进行锁的操作的时候必须在每个线程中自己获取锁然后自己释放锁否则会造成一直在等待也可以称之为死锁。 4、 事件 在进行多线程的时候可以判断一个事件发生然后触发做另外的事情从而可以使用event如下代码所示 [rootpython 523]# cat thread_demo.py #!/usr/bin/env pythonimport threading import time import Queuedef producter(name,queue,lock):event.clear()print %s start to product... % namequeue.put(something)time.sleep(3)print product somethingevent.set()event.wait()def consumer(name,queue,lock):print %s start to consume... % nameevent.wait()queue.get()print consume somethingevent.set()lock threading.Lock() queue Queue.Queue(10) event threading.Event() threads [] threadsc [] for i in range(1):t threading.Thread(targetproducter,args(kel%s % i,queue,lock))threads.append(t) for i in range(1):threads[i].start() for i in range(1):t threading.Thread(targetconsumer,args(smile%s % i,queue,lock))threadsc.append(t) for i in range(1):threadsc[i].start() 在使用event的时候clear表示将flag设置为falseset表示设置为truewait表示在false的时候一直等待从而当producter没有数据的时候consumer一直在等待。 这种可以做事件的触发。 问题 在进行此实验的时候如果线程出现错误那么是无法关闭的从而只有杀掉进程才可以从而可以使用命令如下 killall python 杀掉进程的同时杀掉线程。可以杀死进程但是线程是无法杀掉的
http://www.hkea.cn/news/14312380/

相关文章:

  • 哪有做网站的 优帮云中小企业网站建设论文
  • 代做预算网站2022年最新血糖标准权威发布
  • mvc5网站开发项目下载国外域名注册
  • 吉林省 网站建设wordpress qq空间
  • 南通网站制作公司wordpress的restapi
  • 金堂做网站的公司四川省优质校建设 网站
  • 化妆品网站建设的设计思路免费网站提交入口
  • 做图片网站用什么程序买房网站怎么做
  • 网站导航栏设计百度收录要多久
  • 网站建设公司发展理念郑州三牛网站建设
  • 合肥网站建设哪家专业网站跟网页的区别
  • 如何做婚恋网站微信公众号小程序是什么
  • 网站开发是否用html5沈阳男科医院哪家好一些
  • 网站怎么做直通车广告公司的网站建设价格
  • 做电子商务网站 语言东莞排名推广
  • 网址导航网站建企业网站 硬件
  • 做自媒体可利用的国外网站开发者模式打开有什么影响
  • 四川专业网站建设公司网站网页设计招聘
  • 网站开发建设专业的公司网站建设的公司上海
  • 开网店的步骤和流程aso优化技巧大aso技巧
  • 做生鲜食品最好的网站企业网站手机端模板
  • 网站标签中的图片怎么做的网站搜索引擎优化情况怎么写
  • 河海大学土木专业类建设网站pageadmin模板
  • 网站建设优化服务如何成都网络营销公司哪家好
  • django网站开发源码个人做淘宝客网站好做吗
  • 网站页面设计需要遵循的六大原则网络服务提供商有哪些
  • 网站建设工作计划表北京建设网站圣辉友联
  • 网站名称怎么起好听wordpress 综合主题
  • 网站空间域名多少钱wordpress改回旧版编辑器
  • 1688精品货源网站入口网站建设成都哪家公司好