进程、线程、队列小结
线程与进程区别:
进程:资源的集合
线程:操作系统最小调度单位
进程就相当于一个屋子,里面存储各种资源,每个人是一个线程,获取各种资源到CPU上去执行
进程与线程谁快?
二者是无法比较的,进程通过线程执行,进程至少包括一个线程,进程执行与线程执行实质上就是两个线程执行时间比较。。。。。。
同一进程中,线程之间内存共享(资源共享)。
所以说,当如果两个线程同时修改一个数据,会导致结果不正确,比如A线程把数据拿走没修改完,B线程也同时对数据操作就会导致结果出错,所以需要加锁,
同时修改同一份数据时,故必须加锁,即mutex,(互斥锁),
递归锁
锁中有锁
join
等待一个线程执行结束
信号量:实际上也还是lock,同一时间允许多个线程操作(类似于进程池)
def run(n):
print('run thread...')
for i in range(10):
t = threading.Thread(target=run, args=(n,))
t.setDaemon(True)#设置守护线程,必须在start之前
t.start()
print 'master is done....'
守护线程 (slave) 服务于非守护线程(master),非守护线程down,守护线程也down。。。。。。
queue队列
主要作用:
1、解耦,使得程序之间实现松耦合,(一个模块修改不会影响下一个)
2、提高处理效率
FIFO = first in first out
LIFO = last in first out
队列和列表区别:
列表:列表取出数据,相当于复制一份,列表中数据还在
队列:数据取出后,队列中的数据就不存在了
队列例子:消费者生产者模型,就是一个解耦,一边放数据,一边取数据,互相不影响。

浙公网安备 33010602011771号