摘要: 1. 注意: 导包是: from multiprocessing.pool import ThreadPool #线程池不在thrading中 2. 代码: from mutiprocessing.pool import ThreadPool def func(*args,**kwargs): pr 阅读全文
posted @ 2018-11-22 18:26 山…隹 阅读(241) 评论(0) 推荐(0)
摘要: 注意:必须加 close() 和 join(),且 close 必须在 join 之前 代码: import multiprocessing #执行方法 def func(*args,**kwargs): print(args,kwargs) pool = multiprocessing.Pool( 阅读全文
posted @ 2018-11-22 18:16 山…隹 阅读(124) 评论(0) 推荐(0)
摘要: 代码: 阅读全文
posted @ 2018-11-22 17:44 山…隹 阅读(182) 评论(0) 推荐(0)
摘要: 代码: import threading 图例: 阅读全文
posted @ 2018-11-22 16:40 山…隹 阅读(212) 评论(0) 推荐(0)
摘要: 思路: 利用thread类中,run方法在子线程中调用,其他方法在主线程调用,所以将生产者写入主线程,将消费者写入run函数中在子线程中执行,完成生产者消费者模型 注意: 1. 要在 init 函数中实例化一个Queue队列作为生产者消费者中介 2. 要在 init 函数中把daemon值设为Tru 阅读全文
posted @ 2018-11-22 12:43 山…隹 阅读(307) 评论(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 山…隹 阅读(496) 评论(0) 推荐(0)
摘要: 注意 : mgr = multiprocessing.Manager() 生成了一个守护进程,如果主进程完毕,mgr这个实例也没有了,所以在结尾加了mgr.join()才能运行 代码: 阅读全文
posted @ 2018-11-21 21:09 山…隹 阅读(1773) 评论(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 山…隹 阅读(372) 评论(0) 推荐(0)
摘要: gil锁作用: 遇到阻塞( 比如 recv() , accept() )就切换 阅读全文
posted @ 2018-11-21 15:53 山…隹 阅读(123) 评论(0) 推荐(0)
摘要: 用法: 先实例化 lock = threading.Lock() 1. lock.acquire() 上锁 需上锁代码 lock.release() 解锁 2. with lock: 上下两种方式都行 需上锁代码 整体代码: import threading lock = threading.Loc 阅读全文
posted @ 2018-11-21 15:30 山…隹 阅读(283) 评论(0) 推荐(0)