线程池是一个操作系统的概念,它是对多线程的一种优化。 多线程的时候,创建和销毁线程伴随着操作系统的开销,如果频繁创建/销毁线程,则会使效率大大降低。 而线程池,是先创建出一批线程放入池子里,需要创建线程的时候从这个池子里取,用过了再放这个池子里。 显然,使用线程池节省的是线程创建和销毁的时间。 因为 ...
分类:
编程语言 时间:
2018-01-07 14:13:24
阅读次数:
121
注解简单来说就是配置,是特别的配置,之前常用的配置文件,可以用注解替换。然后通过反射去获取注解的信息。 如何定义一个注解 你在IDE中新建一个注解定义,是这样的结构的: 然后大概有4个对上述结构加上一些配置,当然,这配置是以注解的形式添加的=_=! 此注解使用在哪里 此注解会应用的哪里,可通过如下配 ...
分类:
编程语言 时间:
2017-12-30 22:34:33
阅读次数:
171
GIL线程全局锁 线程全局锁(Global Interpreter Lock),即Python为了保证线程安全而采取的独立线程运行的限制,说白了就是一个核只能在同一时间运行一个线程.对于io密集型任务,python的多线程起到作用,但对于cpu密集型任务,python的多线程几乎占不到任何优势,还有 ...
分类:
编程语言 时间:
2017-12-21 17:14:58
阅读次数:
201
既然有GIL锁,为什么还使用多线程? CPU运行程序的时候,从内存中读取数据块,但是内存不支持断电保存的功能。一旦断电,数据就会丢失。所以需要把数据存到物理磁盘中,所以CPU运行程序的时候需要先从磁盘中读出来,放到内存中,CPU才能取到数据。磁盘的读取比较慢,CPU在物理磁盘中取数据时,需要等待磁盘 ...
分类:
编程语言 时间:
2017-12-19 15:17:12
阅读次数:
164
解释性语言:python写的代码就被称为程序,cpu硬件能运行二进制代码指令。demo.py需要经过python解释器编译才做才能执行。 非解释性语言:例如c语言程序,同样需要写代码。demo.c这个代码并不是程序,因为运行不起来,要想真正运行起来就需要编译的操作,把demo.c编译成一个二进制的程 ...
分类:
编程语言 时间:
2017-12-19 15:07:09
阅读次数:
137
# 进程:系统进行资源调度的基本单元; # 一个程序在一个数据集上一次动态执行过程; # 进程:程序,数据集,进程控制块; # 1.程序:描述进程功能的完成; # 2.数据集:程序在执行过程中需要使用的资源; # 3.进程控制块:描述进程执行的变化过程,用来系统控制管理进程; # 线程:CPU调度的... ...
分类:
编程语言 时间:
2017-12-17 23:44:53
阅读次数:
157
https://github.com/gildas-lormeau/JSONView-for-Chrome https://www.cnblogs.com/androidstudy/p ...
GIL 与 Python 线程的纠葛 GIL 是什么?它对 python 程序会产生怎样的影响?我们先来看一个问题。运行下面这段 python 代码,CPU 占用率是多少? 答案是什么呢,占用 100% CPU?那是单核!还得是没有超线程的古董 CPU。在我的双核 CPU 上,这个死循环只会吃掉我一 ...
分类:
编程语言 时间:
2017-12-13 23:31:25
阅读次数:
225
多进程、多线程 [toc] 线程 线程是==操作系统能够进行运算调度的最小单位(程序执行流的最小单元)==。它被包含在进程之中,是进程中的实际运作单元。一条线程指的是进程中==一个单一顺序的控制流==,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 一个标准的线程有线程ID、当前指令指针( ...
分类:
编程语言 时间:
2017-12-09 00:43:11
阅读次数:
209
一、Python中是如何进行内存管理的? 垃圾回收:Python不像C++,Java等语言一样,他们可以不用事先声明变量类型而直接对变量进行赋值。对Python而言,对象的类型和内存都是在运行时确定的。这也是为什么我们称Python语言为动态类型的原因 引用计数:Python采用类似Windows内 ...
分类:
编程语言 时间:
2017-12-08 21:07:05
阅读次数:
233