线程-互斥锁

从例子出发,来看需求: n=100, 启动100个线程,每个线程对n-1,运行完后输出最后结果。   来看我们一般的做法: 这儿已n=3为例: from threading import Thread import time n = 3 def task(): global n temp = n time.sleep(0.1) ……

守护线程

无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁 需要强调的是:运行完毕并非终止运行 1、对主进程来说,运行完毕指的是主进程代码运行完毕 2、对主线程来说,运行完毕指的是主线程所在的进程内所有非守护线程统统运行完毕,主线程才算运行完毕 详细解释: 1、主进程在其代码结束后就已经算运行完毕了(守护进程在此时就被回收),然……

nginx代理websoket

配置文件如下: http { include mime.types; default_type application/octet-stream; # for websoket map $http_upgrade $connection_upgrade { default upgrade; ” close; } log_format m……

进程与线程的区别

区别: 1. 开进程的开销远大于线程 2. 同一进程内的多个线程共享该进程的地址空间   验证区别1:开进程的开销远大于线程 先来看开进程: from multiprocessing import Process import time def piao(name): print(“%s piaoing” % name) tim……

生产者消费者模型

为什么要使用生产者消费者模型 生产者指的是生产数据的任务,消费者指的是处理数据的任务,在并发编程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据。同样的道理,如果消费者的处理能力大于生产者,那么消费者就必须等待生产者。为了解决这个问题于是引入了生产者和消费者模式。 什么是生产者和消费者模……

队列

进程彼此之间互相隔离,要实现进程间通信(IPC),multiprocessing模块支持两种形式:队列和管道,这两种方式都是使用消息传递的 创建队列的类(底层就是以管道和锁定的方式实现): Queue([maxsize]):创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。 参数介绍: maxs……

互斥锁

什么是互斥锁? 就是把多个进程并发修改同一块共享数据的操作变成串行,此举会牺牲效率,但是保证了数据安全。 举个例子,在合租房里,公共使用的卫生间,有同时几个人都要上卫生间,但是卫生间不可能同时给几个人使用,是要看谁先抢到把门锁上就谁使用,等使用完了打开锁之后下一个人才能都继续使用。 在程序上就是,当几个任务并发的时候,由于共享的是同一个操……