同步对象(同步条件Event)
    
                
摘要:event = threading.Event() #创建同步对象 event.wait() #同步对象等待状态 event.set() #同步对象设置Trueevent.clear() #清除同步对象 event.wait() >捕捉到 event.set() > 继续执行 >event.clea
        
阅读全文
 
                
                    posted @ 
2018-06-01 16:43 
Python哥
        
阅读(162) 
         
        推荐(0)     
                 
             
                
                
    线程死锁和递归锁
    
                
摘要:在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁,因为系统判断这部分资源都正在使用,所有这两个线程在无外力作用下将一直等待下去。 下面是一个死锁的例子:
        
阅读全文
 
                
                    posted @ 
2018-06-01 14:06 
Python哥
        
阅读(213) 
         
        推荐(0)     
                 
             
                
                
    同步锁Lock(互斥锁)
    
                
摘要:同步锁作用: 在我当前包含(lock.acquire() 和 lock.release()之间 )的代码没有执行完成,不进行线程切换,必须等我执行完了,下一个线程才能继续执行(为什么要用同步锁,假如我们同时在操作一个数据的时候,比如数字100,10个线程同时操作他减1的时候,每个线程减10次,我们想
        
阅读全文
 
                
                    posted @ 
2018-05-30 20:54 
Python哥
        
阅读(415) 
         
        推荐(0)     
                 
             
                
                
    GIL计算python 2 和 python 3 计算密集型
    
                
摘要:首先我画了一张图来表示GIL运行的方式: 结果: # 加法结果 499999500001 # 乘法结果: 结果太长省去了 # 上面2个线程总共运行时间: 27.660937547683716 Python 2中计算如上代码: 结果: # 加法结果 499999500001 # 乘法结果: 结果太长省
        
阅读全文
 
                
                    posted @ 
2018-05-30 17:36 
Python哥
        
阅读(442) 
         
        推荐(0)     
                 
             
                
                
    什么是python的全局解释锁(GIL)
    
                
摘要:GIL解决了Python中的什么问题? 为什么选取GIL作为解决方案? 对多线程Python程序的影响 为什么GIL还没有被删除? 为什么在Python 3 中GIL没有被移除? 如何处理Python中的GIL? 我们所说的Python全局解释锁(GIL)简单来说就是一个互斥体(或者说锁),这样的机
        
阅读全文
 
                
                    posted @ 
2018-05-30 16:53 
Python哥
        
阅读(5163) 
         
        推荐(2)     
                 
             
                
                
    IO密集型和计算密集型
    
                
摘要:我们常说的多任务或者单任务分为两种: IO密集型的任务 计算密集型的任务 IO密集型的任务或:有阻塞的状态,就是不一直会运行CPU(中间就一个等待状态,就告诉CPU 等待状态,这个就叫IO密集型),例如:sleep 状态等 这个上面代表了IO密集型. 计算密集型的任务: 反过来没有等待状态就是计算密
        
阅读全文
 
                
                    posted @ 
2018-05-30 16:16 
Python哥
        
阅读(5121) 
         
        推荐(2)     
                 
             
                
                
    并发并行与异步的概念
    
                
摘要:为了提高CPU的使用效率、支持多任务操作,操作系统中引入了并发技术。 所谓并发是指系统中的多个程序或程序段能够同时执行,这里的同时执行并不是指某一个时刻多段程序在同进执行(除非有多个CPU),而是CPU能把时间分给不同的程序段。比如前面等待I/O的例子,若采用并发技术,当一个程序在等待I/O时,系统
        
阅读全文
 
                
                    posted @ 
2018-05-30 14:50 
Python哥
        
阅读(455) 
         
        推荐(0)     
                 
             
                
                
    threading 多线程类继承方式调用
    
                
摘要:import threading #线程import timeclass Work(threading.Thread): def __init__(self,n): threading.Thread.__init__(self) #改写父类init方法 并把self 传递过去 self.n = n 
        
阅读全文
 
                
                    posted @ 
2018-05-30 10:35 
Python哥
        
阅读(272) 
         
        推荐(0)     
                 
             
                
                
    setDaemon 守护线程
    
                
摘要:setDaemon(True): 将线程声明为守护线程,必须在start() 方法调用之前设置, 如果不设置为守护线程程序会被无限挂起。这个方法基本和join是相反的。 当我们 在程序运行中,执行一个主线程,如果主线程又创建一个子线程,主线程和子线程 就分兵两路,分别运行,那么当主线程完成 想退出时
        
阅读全文
 
                
                    posted @ 
2018-05-29 20:06 
Python哥
        
阅读(724) 
         
        推荐(0)     
                 
             
                
                
    for 没有作用域的说话
    
                
摘要:for i in range(10): passprint(i) 打印的结果就是9 打印的最后一次结果
        
阅读全文
 
                
                    posted @ 
2018-05-29 17:54 
Python哥
        
阅读(170) 
         
        推荐(0)     
                 
             
                
                
    threading join用法
    
                
摘要:运行的结果是: Beijing time is start 2018-05-29 17:37:18 Shanghai time is start 2018-05-29 17:37:18 Beijing time is over 2018-05-29 17:37:20 Done Shanghai ti
        
阅读全文
 
                
                    posted @ 
2018-05-29 17:42 
Python哥
        
阅读(958) 
         
        推荐(0)     
                 
             
                
                
    threading 多线程使用
    
                
摘要:实例 1import threading #线程import timedef Say(n): print('Test %d' %n) time.sleep(2)if __name__ == '__main__': t1 = threading.Thread(target=Say,args=(10,)
        
阅读全文
 
                
                    posted @ 
2018-05-29 17:24 
Python哥
        
阅读(197) 
         
        推荐(0)     
                 
             
                
                
    线程概念
    
                
摘要:什么是线程: 大白话;进程是一个具体的应用程序,线程是进程中的一个分支,为单独完成程序中的某一项或一组功能而存在。应用程序可以有一个或多个进程,一个进程可以有一个或多个线程,其中一个是主线程 前提: 1 我们有了进程概念后,不同程序之间完成切换,我们可以浏览网页 听歌等其他操作, 2 但是现在有另外
        
阅读全文
 
                
                    posted @ 
2018-05-29 15:26 
Python哥
        
阅读(166) 
         
        推荐(0)     
                 
             
                
                
    操作系统切换CPU的方式
    
                
摘要:操作系统切换CPU的方式 1 IO等待切换. 2 时间轮询切换,也就是如果没有IO等待的情况下,就会有时间轮询切换,不让CPU一直处理一个任务 CPU的处理速度是纳秒级别的,所有我们可以同时听歌,看电影,浏览网页,其实这过程中,CPU 不断在切换,因为CPU处理速度实在太快,以至于我们人感官不出来中
        
阅读全文
 
                
                    posted @ 
2018-05-29 15:02 
Python哥
        
阅读(957) 
         
        推荐(0)     
                 
             
                
                
    操作系统的简单历史(多道程序设计)
    
                
摘要:多道程序设计, 用于解决顺序执行的问题: 真空管与穿孔卡片(无操作系统,也就是第一代操作系统) 在以前第一代计算机,处理任务,用的是卡片的方式,需要 输入 处理 输出 三部分组成 任务1卡片放入输入设备 然后到处理设备, 处理完成后,到输出设备打印结果,这时候如果有多个任务,就需要排队等待,比如这时
        
阅读全文
 
                
                    posted @ 
2018-05-29 10:21 
Python哥
        
阅读(518) 
         
        推荐(0)     
                 
             
                
                
    进程概念
    
                
摘要:进程:本质上就是一段程序的运行过程(进程本身是一个抽象的概念) 假如有两个程序A和B,程序A在执行到一半的过程中,需要读取大量的数据输入(I/O操作),而此时CPU只能静静地等待任务A读取完数据才能继续执行,这样就白白浪费了CPU资源。是不是在程序A读取数据的过程中,让程序B去执行,当程序A读取完数
        
阅读全文
 
                
                    posted @ 
2018-05-25 18:49 
Python哥
        
阅读(156) 
         
        推荐(0)     
                 
             
                
                
    subprocess
    
                
摘要:import subprocessres = subprocess.Popen('dir',shell=True,stdout=subprocess.PIPE,stdin=subprocess.PIPE,stderr=subprocess.PIPE)print(res.stdout.read().d
        
阅读全文
 
                
                    posted @ 
2018-05-25 11:16 
Python哥
        
阅读(130) 
         
        推荐(0)     
                 
             
                
                
    字符编码转换
    
                
摘要:什么是字符:字符编码(英语:Character encoding)也称字集码.大白话就是字符对应的0101这样的数字 就是字符跟数字一一对应的关系 比如:hello h --> 0101010 e --> 0101101 l --> 10101010 以上就是字符编码的表现形式 字符编码的发展史与分
        
阅读全文
 
                
                    posted @ 
2018-05-23 10:01 
Python哥
        
阅读(685) 
         
        推荐(0)     
                 
             
                
                
    Socket 网络编程
    
                
摘要:socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。所以,我们无需深入理
        
阅读全文
 
                
                    posted @ 
2018-05-22 20:15 
Python哥
        
阅读(169) 
         
        推荐(0)     
                 
             
                
                
    异常处理
    
                
摘要:inp = input(">>>>>")try: r = int(inp) print(r)except Exception as e: print(e)else: print("try内代码没有异常就执行else")finally: print("上面执行结果对错,我都执行")主动触发异常raise try: raise KeyError('错误')ex...
        
阅读全文
 
                
                    posted @ 
2018-05-22 17:10 
Python哥
        
阅读(76) 
         
        推荐(0)