随笔分类 - python
摘要:Python提供两个模块进行多线程的操作,分别是thread和threading, 前者是比较低级的模块,用于更底层的操作,一般应用级别的开发不常用。 方法1:直接使用threading.Thread() import threading # 这个函数名可随便定义 def run(n): print
阅读全文
摘要:code import time import random from multiprocessing import Pool, Manager # 生产者 def producer(q, i): food = 'Spam-%d' % i time.sleep(random.uniform(1, 2
阅读全文
摘要:code import time import random from multiprocessing import Process, Queue # 生产者 def producer(q, i): food = 'Spam-%d' % i time.sleep(random.uniform(2,
阅读全文
摘要:code import time import random from multiprocessing import Queue # 生产者 def producer(q, num): for i in range(1, num + 1): food = 'Spam-%d' % i # time.s
阅读全文
摘要:GIL本质就是一把互斥锁,既然是互斥锁,所有互斥锁的本质都一样,都是将并发运行变成串行,以此来控制同一时间内共享数据只能被一个任务所修改,进而保证数据安全。 # 为何要有GIL? 因为Cpython解释器自带垃圾回收机制不是线程安全的。 # 如果不对垃圾回收机制线程做任何处理,也没有GIL锁行不行?
阅读全文
摘要:#主进程等 >p1,p2,p3等 >c1,c2 #p1,p2,p3结束了, 证明c1,c2肯定全都收完了p1,p2,p3发到队列的数据 #因而c1,c2也没有存在的价值了,不需要继续阻塞在进程中影响主进程了。应该随着主进程的结束而结束,所以设置成守护进程就可以了 code from multipro
阅读全文
摘要:之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把CPU的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要消耗一定的时间来创建进程、创建线程、以及管理他们之间的切换。 随着我们对于效率的追求不断
阅读全文
摘要:code import time def time_count(func): def wrapper(*args, **kwargs): start = time.time() res = func(*args, **kwargs) end = time.time() print(f'{func}
阅读全文
摘要:进程就是正在执行的一个过程,进程是对正在运行程序的一个抽象。 进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一。操作系统的其他所有内容都是围绕进程的概念展开的。 所以想要真正了解进程,必须事先了解操作系统。 PS:即使可以利用的cpu只有一个(早期的
阅读全文
摘要:code from multiprocessing import Process,Queue import time,random,os def consumer(q,p1): while True: res=q.get() if(res=="finish"): break time.sleep(r
阅读全文
摘要:并行:并行是指两者同时执行,比如赛跑,两个人都在不停的往前跑;(资源够用,比如三个线程,四核的CPU) 并发:并发是指资源有限的情况下,两者交替轮流使用资源,比如一段路(单核CPU资源)同时只能过一个人,A走一段后,让给B,B用完继续给A,交替使用,目的是提高效率。 并行:是从微观上,也就是在一个精
阅读全文
摘要:code import os from multiprocessing import Process def f(x): print('子进程id :',os.getpid(),'父进程id :',os.getppid()) return x*x if __name__ == '__main__':
阅读全文
摘要:多进程并行 code import time from multiprocessing import Process def f(name): print('hello', name) time.sleep(1) if __name__ == '__main__': p_lst = [] for i
阅读全文
摘要:code import os from multiprocessing import Process class MyProcess(Process): def __init__(self,name): super().__init__() self.name=name def run(self):
阅读全文
摘要:code # 由并发变成了串行,牺牲了运行效率,但避免了竞争 import os import time import random from multiprocessing import Process,Lock def work(lock,n): lock.acquire() print('%s
阅读全文
摘要:在并发编程中使用生产者和消费者能够解决绝大多数并发问题。该模式通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度。 4.1什么是生产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产
阅读全文
摘要:code import os import time import multiprocessing # 向Queue中输入数据的函数 def input(queue): info = str(os.getpid()) + '(put):' + str(time.asctime()) queue.pu
阅读全文
摘要:code # 文件db的内容为:{"count":1} # 注意一定要用双引号,不然json无法识别 # 并发运行,效率高,但竞争写同一文件,数据写入错乱 from multiprocessing import Process,Lock import time,json,random def sea
阅读全文
摘要:code # 文件db的内容为:{"count":5} # 注意一定要用双引号,不然json无法识别 # 并发运行,效率高,但竞争写同一文件,数据写入错乱 from multiprocessing import Process,Lock import time,json,random def sea
阅读全文
摘要:code import time from multiprocessing import Queue, Process def f(q): q.put([time.asctime(), 'from Eva', 'hello']) # 调用主函数中p进程传递过来的进程参数,puy函数为向队列中添加一条
阅读全文

浙公网安备 33010602011771号