05 2020 档案
摘要:1 """ 2 协程,运行的时候轮流去执行各个任务,如果生产者生产的速度比较慢,这里可以使用者个切换出去 3 4 greenlet 会交出执行权,但是如果后面的耗时任务也不会就进入耗时,等下次轮到了,还是要进行耗时 5 这个程序的效果就只能够是轮询,起不到实际的节约时间的效果 6 """ 7 imp
阅读全文
摘要:1 """ 2 线程通信的生产者与消费者 3 python的queue模块中提供了同步的线程安全的队列类,都具有原子性,实现线程间的同步 4 Queue (FIFO: fist in fist out) 5 LifoQueue (LIFO: last in fist out) 6 PriorityQ
阅读全文
摘要:1 """ 2 死锁 3 要AB两个锁 4 当A锁内部需要使用B锁,同时B锁内部需要使用A锁的时候,就要可能会出现死锁 5 6 出现死所的解决方法: 7 1.重构代码 8 2.添加timeout时间 9 10 下面代码中要可能返回下面内容,在同时认为锁被对方占用,同时释放 11 Thread-1获取
阅读全文
摘要:1 """ 2 线程锁 3 我这用的是python3.7,必须要加锁才可以保证数据的确定性 4 """ 5 import time 6 from threading import Thread, Lock 7 8 lock = Lock() 9 10 list1 = [0] * 10 11 12 1
阅读全文
摘要:1 """ 2 进程间通信 3 """ 4 import time 5 from multiprocessing import Pool, Queue, Process 6 7 8 def pull_task(q: Queue): 9 tasks = ["任务1", "任务2", "任务3", "任
阅读全文
摘要:1 """ 2 队列 3 q = Queue(5) # 创建一个最大容量为5的队列,先进先出的原则 4 q.put("1") # 添加元素,队列数量满了的时候,会堵在put处 5 q.put("1", timeout=3) # 如果超出3秒没有加入进去就会报错 6 q.put_nowait("6")
阅读全文
摘要:1 """ 2 阻塞模式:一个一个任务单独放进进程池,处理完一个再放下一个任务进来,主进程要等着些执行完再执行 3 """ 4 5 import os 6 import time 7 from multiprocessing import Pool 8 from random import rand
阅读全文
摘要:1 """ 2 非阻塞模式:当进程池有空闲,就将任务放入,它会继续执行主进程 3 """ 4 import os 5 import time 6 from multiprocessing import Pool 7 from random import random 8 9 container =
阅读全文
摘要:1 """ 2 python的线程和java的线程是有差别的, 3 python的进程更像java的线程 4 线程状态:创建 -> 就绪或运行或阻塞 -> 结束 5 6 优点: 7 在一些等待的任务上有优势,如用户输入、文件读写、网络收发数据等。在这些情况下可以释放珍贵的内存cpu资源 8 9 常用
阅读全文
摘要:计算密集型的部分适合使用进程,耗时的部分适合使用线程 1 from multiprocessing import Pool 2 3 # 创建一个进程池,里面放5个进程 4 pool = Pool(5) 5 6 # 阻塞模式 7 pool.apply(task, args=(t,)) 8 9 # 非阻
阅读全文

浙公网安备 33010602011771号