进程、线程、队列小结

线程与进程区别:

进程:资源的集合

线程:操作系统最小调度单位

进程就相当于一个屋子,里面存储各种资源,每个人是一个线程,获取各种资源到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

队列和列表区别:

列表:列表取出数据,相当于复制一份,列表中数据还在

队列:数据取出后,队列中的数据就不存在了

队列例子:消费者生产者模型,就是一个解耦,一边放数据,一边取数据,互相不影响。

 

posted @ 2019-03-18 22:00  Dylan123  阅读(384)  评论(0)    收藏  举报