GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程 ...
分类:
编程语言 时间:
2019-01-22 21:45:55
阅读次数:
217
线程与全局解释器锁(GIL) 一、线程概论 1、何为线程 每个进程有一个地址空间,而且默认就有一个控制线程。如果把一个进程比喻为一个车间的工作过程那么线程就是车间里的一个一个流水线。 进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。 多线程(即多个 ...
分类:
编程语言 时间:
2019-01-20 11:52:01
阅读次数:
201
python是支持多线程的,主要是通过thread和threading这两个模块来实现的。thread模块是比较底层的模块,threading模块是对thread做了一些包装的,可以更加方便的使用。 虽然python的多线程受GIL限制,并不是真正的多线程,但是对于I/O密集型计算还是能明显提高效率 ...
分类:
编程语言 时间:
2019-01-18 12:22:27
阅读次数:
240
1. 先看一个关于GIL的面试题 2. python语言的特征 python语言是解释型语言,执行代码的过程是先将代码交给python解释器,由解释器翻译成机器识别的二进制,然后交给CPU去执行。对于python解释器,有C语言写的称之为cpython,也有java写的称之为Jpython,官方推荐 ...
分类:
其他好文 时间:
2019-01-16 12:03:32
阅读次数:
213
进程: 一些资源的集合。 一个进程里面最少有一个线程,主线程。 线程: 程序执行的最小单位。 电脑CPU有几个核心,就同时只能运行几个任务。 #上下文切换 全局解释器锁,GIL。 锁 多个线程同时去操作同一个数据的时候,可能会导致数据不正确。 要把这个数据机上锁,这样同时就只能有一个线程在操作这个数 ...
分类:
编程语言 时间:
2019-01-15 20:30:33
阅读次数:
180
1.线程理论以及线程的两种创建方法 2.线程之间是数据共享的与join方法 3.多线程和多进程的效率对比 4.数据共享的补充线程开启太快 5.线程锁 互斥锁 同步锁 6.死锁现象和递归锁 7.守护线程和守护进程的对比 8.补充 9.GIL锁&GIL锁与线程锁的区别 10.GIL锁补充 11.信号量 ...
分类:
编程语言 时间:
2019-01-14 23:15:57
阅读次数:
256
什么是线程 进程:资源分配单位 线程:cpu执行单位(实体),每一个py文件中就是一个进程,一个进程中至少有一个线程 线程的两种创建方式: 一 二 线程的创建和销毁,相对于进程来说开销特别小 线程之间资源共享,共享的是同一个进程中的资源, 资源共享就涉及到数据安全问题,加锁来解决 线程锁 From ...
分类:
编程语言 时间:
2019-01-14 17:18:18
阅读次数:
143
1、lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况,lsof -i:8000 2、netstat -tunlp |grep 端口号 用于查看指定的端口号的进程情况,如查看8000端口的情况,netstat -tunlp |grep 8000 说明一下几个参数的含义: ...
分类:
系统相关 时间:
2019-01-14 14:57:13
阅读次数:
221
上一篇文章介绍了:创建县城的两种方式、Event对象判断线程是否启动、利用信号量控制线程并发。 博客链接:线程、进程、协程和GIL(二) 这一篇来说说线程间通信的那些事儿: 一个线程向另一个线程发送数据最安全的方式就是使用queue库中的队列了,通过创建一个供多个线程共享的Queue对象,这些线程使 ...
分类:
编程语言 时间:
2019-01-13 01:56:03
阅读次数:
197
方式二: 线程之间数据共享的验证: GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。 可以肯定的一点是:保护不同的数据的安全,就应该加不同的锁。 要想了解GIL,首先确定一点:每次执行pyth ...
分类:
编程语言 时间:
2019-01-12 00:24:37
阅读次数:
191