摘要: 一 死锁现象 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程,如下就是死锁 执行结果 解决方法: 二 递归锁 递归锁,在Python中为了支 阅读全文
posted @ 2019-06-21 23:46 minger_lcm 阅读(524) 评论(0) 推荐(0) 编辑
摘要: GIL与Lock Python已经有一个GIL来保证同一时间只能有一个线程来执行了,为什么这里还需要互斥锁lock? 锁的目的是为了保护共享的数据,同一时间只能有一个线程来修改共享的数据 GIT保证了一个进程内有多个线程,只有一个线程执行,保证python垃圾回收线程安全 结论:保护不同的数据就应该 阅读全文
posted @ 2019-06-21 17:34 minger_lcm 阅读(373) 评论(0) 推荐(0) 编辑
摘要: python 并发编程 多线程 GIL全局解释器锁基本概念 python 并发编程 多线程 GIL与Lock python 并发编程 多线程 GIL与多线程 阅读全文
posted @ 2019-06-21 12:01 minger_lcm 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。 就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码。 >有名的编译器例如GCC,INTEL C++,Visual C++等。Python也一样,同样一段代 阅读全文
posted @ 2019-06-21 12:00 minger_lcm 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 1.执行一个python程序 ,会产生一个进程 ,然后会在内存生成一份内存空间 先把python解释器代码加载到内存里, python解释器代码就是C语言代码 2. 然后再把 自己写的python文件程序代码 加载到内存 3.然后python解释执行, 把python代码交给CPython解释器是解 阅读全文
posted @ 2019-06-21 11:59 minger_lcm 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 互斥锁 并行变成串行,牺牲效率 保证数据安全,实现局部串行 保护不同的数据,应该加不同的锁 现在一个进程 可以有多个线程 所有线程都共享进程的地址空间 实现数据共享 共享带来问题就会出现竞争 竞争就会出现改乱数据 加上互斥锁 牺牲效率 保证数据安全 通过把并发变成串行 阅读全文
posted @ 2019-06-21 01:18 minger_lcm 阅读(274) 评论(0) 推荐(0) 编辑