摘要:
1. 全局解释器锁,保证同一时间只有一个线程在执行,但是由于它是把数据copy成了两份,所以 只有全局解释器锁的时候,数据加减照样出错了。 2.用户态的锁,保证同一时间,只有一个线程在真真正正地修改数据。 修改数据之前,先加一把锁。修改完了以后,释放锁。修改数据的时候,把程序变成串行的。 运行结果: 阅读全文
摘要:
1. 不管计算机是几核的,在Python中都是串行的。只不过是在不停地进行上下文的切换。 转发自下面网址: http://python.jobbole.com/81822/ 前言:博主在刚接触Python的时候时常听到GIL这个词,并且发现这个词经常和Python无法高效的实现多线程划上等号。本着不 阅读全文
摘要:
join(),等待子线程执行完了,主线程才继续往下执行,等所有线程执行完了,才退出程序。 当把子线程变成守护线程以后,只要主线程(非守护线程)执行完就退出程序,不管子线程完了没完。 主线程没法设置成守护线程。 运行结果,没有等待子线程(守护线程)的sleep的2S,而是直接结束了程序了。 没有看到p 阅读全文
摘要:
1. 主线程启动了子线程之后,主线程与子线程之间是相互独立的。默认情况下主线程是不会等待子线程执行完毕的,主线程只会按照自己的步调执行。 所以在主线程中是没法测定子线程的运行时间的。 运行结果: 2. 用join()函数等待每个的执行结果,每个都执行完了再打印总用了的时间。 运行结果: 3. 用 t 阅读全文
摘要:
1,线程:一堆指令的集合,OS去调度CPU的最小单位就是线程, 线程被包含在进程中,是进程中的实际操作单位。 2,不同的应用软件占用不同的内存,否则可以相互访问,就没有安全性了。每一个程序的内存是独立的。 3.进程:一个程序的各种资源的集合叫进程。 4.进程要操作CPU,必须要先创建一个线程。操作C 阅读全文