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

河南省和建设厅网站首页logo设计理念怎么写

河南省和建设厅网站首页,logo设计理念怎么写,网页设计 网站维护,网页制作论文3000字1、 背景概述 在上篇文章中,主要讲述了python中的socket编程的一些基本方面,但是缺少关于锁的相关概念,从而在这篇文章中进行补充。 由于在python中,存在了GIL,也就是全局解释器锁,从而在每次进行获得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,如下代码所示:

[root@python 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 something'event.set()event.wait()def consumer(name,queue,lock):print '%s start to consume...' % nameevent.wait()queue.get()print 'consume something'event.set()lock = threading.Lock()
queue = Queue.Queue(10)
event = threading.Event()
threads = []
threadsc = []
for i in range(1):t = threading.Thread(target=producter,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(target=consumer,args=('smile%s' % i,queue,lock))threadsc.append(t)
for i in range(1):threadsc[i].start()


在使用event的时候,clear表示将flag设置为false,set表示设置为true,wait表示在false的时候,一直等待,从而当producter没有数据的时候,consumer一直在等待。

这种可以做事件的触发。

问题:

在进行此实验的时候,如果线程出现错误,那么是无法关闭的,从而只有杀掉进程才可以,从而可以使用命令如下:

killall python


杀掉进程的同时杀掉线程。(可以杀死进程,但是线程是无法杀掉的)

http://www.yayakq.cn/news/548322/

相关文章:

  • 重庆建设银行网站首页网站500错误 虚拟主机
  • 网站设计公司市场容量怎么建设自己收费网站
  • 深圳做营销网站公司哪家好wordpress 发布商品
  • 公司网站制作可以使用开源系统吗宁波网站建设地址
  • 用asp做的网站有哪些河源市住房和城乡规划建设局网站
  • 建设网站的合同东莞市网站建设制作设计平台
  • 广州外贸网站开发wordpress主题查看
  • 做网站一个月需要多少钱公司网站模板侵权案例
  • 外语网站开发网站建设和客户面谈
  • 个人网站开发教程西安seo优化培训
  • 青岛微网站制作做网站赚钱
  • 吉林网站优化合肥网站建设q479185700惠
  • 建站系统主要包括最新软件发布平台
  • 邀请码网站怎么做帝国cms做淘宝客网站
  • 机械厂网站建设方案网站在线演示
  • 新乡网站建设制作硬件开发属于什么行业
  • 河北高端网站定制公司长沙好的做网站品牌
  • 网站广告赚钱吗服务公司名字大全
  • 男人和女人在床上做那个网站jsp是做网站后台的吗
  • 急招临时工200元一天福州seo公司排名
  • 免费制作一个企业网站wordpress不支持ie9
  • 代刷业务网站建设模板制作工艺流程
  • 网站开发的编程语言有哪些做网站的硬件和软件环境
  • 一个公司备案多个网站要注意站长工具备案查询
  • 果洛州wap网站建设公司sem培训哪家强
  • 网站开发投资成本完成公司门户网站建设
  • 手机模板的网站哪个好企业邮箱哪个好
  • 如何使用域名访问网站网页制作网站建设
  • 郑州网站建设e橙网熊掌号网站下载小说
  • 男科医院网站建设网站的友情链接怎么做