摘要: 注意:必须加 close() 和 join(),且 close 必须在 join 之前 代码: import multiprocessing #执行方法 def func(*args,**kwargs): print(args,kwargs) pool = multiprocessing.Pool( 阅读全文
posted @ 2018-11-22 18:16 山…隹 阅读(125) 评论(0) 推荐(0)
摘要: 代码: 阅读全文
posted @ 2018-11-22 17:44 山…隹 阅读(186) 评论(0) 推荐(0)
摘要: 代码: import threading 图例: 阅读全文
posted @ 2018-11-22 16:40 山…隹 阅读(215) 评论(0) 推荐(0)
摘要: 思路: 利用thread类中,run方法在子线程中调用,其他方法在主线程调用,所以将生产者写入主线程,将消费者写入run函数中在子线程中执行,完成生产者消费者模型 注意: 1. 要在 init 函数中实例化一个Queue队列作为生产者消费者中介 2. 要在 init 函数中把daemon值设为Tru 阅读全文
posted @ 2018-11-22 12:43 山…隹 阅读(310) 评论(0) 推荐(0)
摘要: 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)