python-queue知识点
1.dict获取value
dict.get(key_name)
2.三元运算
res,err=stdout.read(),stderr.read() #三元运算
result=res if res else err
print(result.decode())
36:10
知识回顾:
1.执行一个线程,如何获取结果?
2.event
event.set() #green_light=ture
event.wait() #等待set方法执行
event.clear() #green_light=false
3.assert 断言
问题:
1.python进程与线程的区别
2.GIL的作用:防止底层原生C程序在同一时刻修改同一份数据 (GIL 表示全局解释器锁)
3.setdaemon
queue类:
LIFO:last in first out
queue.LifoQueue(maxsize=0) maxsize参数用于设置最大上限值,maxsize<=0表示无穷大
FIFO:First in first out
queue.Queue(maxsize=0) maxsize参数用于设置最大上限值,maxsize<=0表示无穷大
queue.PriorityQueue(maxsize=0) 优先级队列构造方法
The lowest valued entries are retrieved first (the lowest valued entry is the one returned by sorted(list(entries))[0]). A typical pattern for entries is a tuple in the form: (priority_number, data).
queue.Empty :用于判断队列中的对象是否为空,如果是空,调用get 或 get_nowait() 方法将引发异常。
queue.Full :用于判断队列中的对象是否已塞满,如果full,调用put 或 put_nowait()方法将引发异常。
queue object方法
Queue.qsize():返回队列的近似大小,qsize>0不会保证后续的get()不会阻塞,qsize<maxsize不会保证后续的put()不会阻塞。
Queue.empty():队列为空,返回True,否则返回false。如果返回True,不会保证后续的get()不会阻塞。同理,如果返回False,不会保证后续的put()不会阻塞。
Queue.full():队列为full,返回True,否则返回false.如果返回True,不会确保后续的get()不会阻塞。同理,如果返回False,不会确保put()不会阻塞。
Queue.put(item,block=True,timeout=None): 向队列中传入值,如果block为True,则在必要时阻塞,直到队列中有空闲插槽可用。timeout用于设置超时时间。
Queue.put_nowait(item): 相当于put(item,False)
Queue.get(block=True,timeout=None):从队列中移除并返回一个项目
Queue.get_nowait() :相当于get(False)
支持跟踪守护线程是否完全处理入队任务:
Queue.task_done()
Queue.join()