摘要: 1. q = queue.Queue(5) 实例化,5为队列长度 2. q.put("haha") 将数据加入队列,计数器+1 3. q.get() 取出数据,计数器不变 4. q.join() 阻塞,知道计数器为0 5. q.task_done() 计数器-1 代码: 阅读全文
posted @ 2018-11-21 21:32 山…隹 阅读(497) 评论(0) 推荐(0)
摘要: 注意 : mgr = multiprocessing.Manager() 生成了一个守护进程,如果主进程完毕,mgr这个实例也没有了,所以在结尾加了mgr.join()才能运行 代码: 阅读全文
posted @ 2018-11-21 21:09 山…隹 阅读(1776) 评论(0) 推荐(0)
摘要: import threading import queue import random import time qq = queue.Queue(4) #实例化一个队列,因为是一个进程的线程,所以共资源 #重写线程类 class produce(threading.Thread): def __init__(self,myqueue): super().__in... 阅读全文
posted @ 2018-11-21 20:22 山…隹 阅读(375) 评论(0) 推荐(0)
摘要: gil锁作用: 遇到阻塞( 比如 recv() , accept() )就切换 阅读全文
posted @ 2018-11-21 15:53 山…隹 阅读(125) 评论(0) 推荐(0)
摘要: 用法: 先实例化 lock = threading.Lock() 1. lock.acquire() 上锁 需上锁代码 lock.release() 解锁 2. with lock: 上下两种方式都行 需上锁代码 整体代码: import threading lock = threading.Loc 阅读全文
posted @ 2018-11-21 15:30 山…隹 阅读(285) 评论(0) 推荐(0)
摘要: import multiprocessing mgr = mutiprocessing.Manager() 开启一个守护子进程,并返回用来与其通信的管理器 share_list = mgr.list() #还有mgr.dic() , mgr.Queue() 方法 def func(myli): my 阅读全文
posted @ 2018-11-21 14:01 山…隹 阅读(209) 评论(0) 推荐(0)