###############总结############ 线程创建的2种方式(重点) 进程:资源分配单位 线程:cpu执行单位(实体) 线程的创建和销毁的开销特别小 线程之间资源共享,是同一个进程中的资源共享,会涉及到安全问题,所以需要加锁解决 锁:牺牲了效率,保证了数据安全(重点) 死锁现象:出 ...
分类:
编程语言 时间:
2019-01-12 00:24:08
阅读次数:
225
1.线程 1.进程与线程 进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。很多人就不理解了,既然进程这么优秀,为什么还要线程呢?其实,仔细观察就会发现进程还是有很多缺陷的,主要体现在两点上: 进程只能在一个时间干一件事,如果想同时干两件事或 ...
分类:
编程语言 时间:
2019-01-11 23:21:31
阅读次数:
242
thread 在数据预处理的时候用处不大,因为有GIL 锁 查看thread信息 定义thread job并开启 join()的功能 先运行join的功能,然后再运行join 下面的。 注释掉 19、20 你也可以添加thread_2.join()进行尝试,但为了规避不必要的麻烦,推荐如下这种122 ...
分类:
编程语言 时间:
2019-01-10 19:27:21
阅读次数:
183
什么是GLI? Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用。为了支持多线程机制,一个基本的要求就是需要实现不同线程对共享资源访问的互斥,所以引入了GIL。由于GLI的存在,一个 ...
分类:
编程语言 时间:
2019-01-09 22:48:47
阅读次数:
277
GIL是什么 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。就好比C++是一套语言(语法)标准,但是可以用不同的编译器来编译成可执行代码。有名的编译器例如GCC,INTEL C++,Visual C++等。Python也一样,同 ...
分类:
编程语言 时间:
2019-01-09 18:43:21
阅读次数:
218
参考链接:https://www.cnblogs.com/alex3714/articles/5230609.html https://www.cnblogs.com/work115/p/5620272.html 编程离不开并发,而并发的基础就离不开线程、进程、协程。那么什么是线程、进程、协程呢? ...
分类:
编程语言 时间:
2019-01-08 15:11:26
阅读次数:
245
Python是一门语法优雅,功能强大,开发效率高,应用领域广泛的解释性语言。 其有非常多的优点,但是也并不是完美的,除了大家都知道的执行速度不够快,Python2和Python3的兼容问题,以及GIL锁,在其语法上也有一些特点(是否是缺点见仁见智啦): 1. 使用可变对象作为函数默认值 代码如下: ...
分类:
编程语言 时间:
2019-01-05 11:13:54
阅读次数:
212
一、GIL全局解释器锁 全局解释器锁 在CPython中,全局解释器锁(GIL)是一个互斥锁,它可以防止多个本机线程同时执行Python代码。之所以需要这个锁,主要是因为CPython的内存管理不是线程安全的。(然而,自从GIL存在以来,其他特性已经逐渐依赖于它所执行的保证) 什么是GIL 全局解释 ...
分类:
编程语言 时间:
2019-01-04 00:23:56
阅读次数:
222
一、概念理论 1、什么是GIL 全局解释器锁 ,是加在解释器上的互斥锁。 ?为什么需要GIL 由于CPython的内存管理是非线程安全,于是CPython就给解释器加了个锁,解决了安全问题 但是降低了效率 另外 虽然有解决方案 但是由于牵涉太多,一旦修改则 很多以前的基于GIL的程序都需要修改, 所 ...
分类:
其他好文 时间:
2019-01-03 22:36:01
阅读次数:
177
GIL 全局解释器锁,针对解释器级别的数据安全 GIL会降低效率提高数据安全性 已经有解决方案但是修改牵扯太多 使得多线程在多核处理器下也无法并行 在多核情况下io密集型推荐多线程,计算密集型用多进程 与自定义锁级别不同要保护自己的数据要自定义 进程池默认装入cpu 个数 ,线程池默认cpu个数*5 ...
分类:
编程语言 时间:
2019-01-03 16:41:58
阅读次数:
150