当前位置: 首页 > news >正文

维护中网站山东建设住建厅网站

维护中网站,山东建设住建厅网站,乐达网站建设公司,浙江省建设信息网进程锁 # 锁在IT界很重要#xff0c;不但在Python中出现#xff0c;尤其是数据库中得锁更多#xff0c;比如#xff1a;表锁、行锁、 悲观锁、乐观锁、进程锁、互斥锁、递归锁、可重入锁、死锁等 # 保证安全 import time # 导入time#xff0c;执行顺序乱了 from…进程锁 # 锁在IT界很重要不但在Python中出现尤其是数据库中得锁更多比如表锁、行锁、      悲观锁、乐观锁、进程锁、互斥锁、递归锁、可重入锁、死锁等 # 保证安全 import time # 导入time执行顺序乱了 from multiprocessing import Process, Lockdef task(i, lock): # 上一把锁 lock.acquire()print(进程%s来了 % i)time.sleep(1)print(进程%s走了 % i) lock.release() # 释放锁只要你上了锁一定别忘了最后释放锁否则的话别的进程永远进不来if __name__ __main__:lockLock() # 得到一把锁for i in range(3):p Process(targettask, args(i1, lock))p.start()# 同一时刻只有一个进程拿到这把锁释放后下一个进程才会拿 # 加锁虽然保证了数据的安全执行的效率一定是降低了               # 该加锁一定要加 如何查看进程号 p.pid()  子进程的进程号 import time,os from multiprocessing import Process, Lockdef task():print(task进程的进程号, os.getpid()) print(task进程的父进程的进程号, os.getppid()) # parent processtime.sleep(20) if __name__ __main__:pProcess(targettask, )p.start()print(子进程的进程号, p.pid)print(主进程的进程号, os.getpid())time.sleep(10) 有了进程号我们就可以通过进程号来结束进程的执行   kill 9176 kill -9 9176 # os.getpid() 写在哪个进程里面就会输出哪个进程的进程号 # taskkill / pid 9176    相当于手动结束命令 进程之间数据隔离问题 # 进程1中的a和进程2中的a完全不一样且不能相互使用 n100 # 主进程n还是不变 def task():global nn1 # 改的子进程中的n # 进程与进程之间数据如何通信? 队列(Queue) 数据结构链表、单链表、双链表、循环链表、栈、队列、树、二叉树、图 队列特点: 先进先出 栈的特点先进后出          python给我们提供了一个内置的队列类 from multiprocessing import Queue qQueue(3) # 超过3个会阻塞等出一个再进 q.put(hello) q.put(world) # 入队往队列里面添加数据 print(q.get()) # hello print(q.get()) # world 出队从队列里面取出值 q.put(self, obj, blockTrue, timeoutNone) # blockFalse: 队列放不进数据时会立马报错 # timeout3超时的时间 如果在指定的时间内没有放进去就会直接报错 q.put_nowait(self,obj): # 值放不进去会直接报错return self.put(obj,False) print(q.get()) print(q.get())       # 三个数都取出来了 print(q.get()) print(q.get())       # 第四个会阻塞等待put输值 q.get()  和q.put用法一样       q.get_nowait() print(q.qsize()) # 取值完为0还剩一个没取的就是1 print(q.empty()) # 看这个队列里还有没有数据 T/F print(q.full()) # 看队列是否满不满 T/F # 队列里面的数据在内存中存着的       # 专业的消息队列kafka rabbitmq等,他们能够解决特殊场景的问题 生产者消费者模型(重要) # 在并发编程中使用生产者和消费者模式能够解决绝大多数并发问题    通过平衡生产线程和消费线程的工作能力来提高程序的整体处理数据的速度 # 通过一个容器来解决强耦合问题生产者和消费者不直接进行通讯                                                                                 def producer():for i in range(10):q.put(生产的第%s个包子 % i) # 放队列 def consumer():while True:res q.get() # 取队列队列没有东西会一直等待print(res)if res is None:break from multiprocessing import Prscess Queue if __name__ __main__:p Process(target producer) # 生产者p.sart()c Process(target consumer) # 消费者c.start() # 改良版本在生产完后放一个标志位当取到标志位break结束 线程 # 在一个进程中线程就是必须存在的至少要有一个线程来执行任务 # 一个进程中可以有多个线程 # 进程和线程都是有操作系统调度的 # 进程是操作系统分配资源的基本单位线程是操作系统执行的最小单位 开启线程 from threading import Thread def task(a, b):pass if __name__ __main__:tThread(targettask, nameThread-2, args(a, ), kwargs{b:1})t.daemon True # 把该线程设置为守护线程, 主线程执行完毕子线程也结束t.start() # 一个进程中如果只有一个线程该线程称之为是主线程其他线程称之为是子线程    本身有一个主线程def task是主线程拉起的一个子线程            # 先子线程后主线程和进程相反               开线程的资源特别小会立刻执行               t.join() 确保子先后主 # 守护线程主线结束子进程立刻结束 t.is_alive() t.setName(aaaa) # 改名字 t.getName(aaaa) t.join() t.start() # 与进程用法一样 t.daemon True t.setDaemon(True) # 守护线程 threading.currentThread() # 当前线程的对象 threading.enumerate() # 返回正在运行的线程对象列表 threading.activeCount() # 正在运行的线程数量进程和线程的比较 1、进程的开销比线程的开销大很多 2、进程之间的数据是隔离的但是线程直接的数据不隔离 3、多个进程之间的线程数据不共享---还是让进程通信(IPC)---进程下的线程也通信---队列 今日思维导图
http://wiki.neutronadmin.com/news/354411/

相关文章:

  • windows优化大师自动安装手机端关键词排名优化软件
  • 漯河网站建设服务公司利用软件做许多网站违法吗
  • 西安seo网站优化众希网站建设
  • 自适应网站建设极速建站wordpress 删除重复文章
  • 响应式网站建设价格南京华佑千家装饰工程有限公司
  • 中国建设银行官网首页 网站首页ps如何做ppt模板下载网站
  • 做自己的游戏网站做游戏课程网站
  • 帝国网站开发线上推广员是做什么的
  • wordpress除了写博客上海seo关键词优化
  • 泉港报名网站建设需要色91Av做爰网站
  • 基于php网站开发最新军事新闻最新消息
  • 煤矿网站建设网站运营分析
  • 关于建设网站的需求分析电商推广专业术语
  • 网站推广方案案例app开发源码
  • 深圳模板网站建设设计公司phpcms做双语网站
  • 海南建设工程信息网站珠海哪个网站制作公司好
  • 电商网站支付体系建设特点文创产品设计方案范本
  • 齐齐哈尔网站设计网游开发成本
  • 手机视频网站建设深圳设计家官网
  • 如何建立商城网站如何建立团购网站
  • 网站空间就是服务器吗阿里巴巴如何建设网站首页
  • 网站自己怎么建设中山今科网站建设
  • 十堰城市建设网站wordpress怎么适应手机
  • 池州建设机械网站没有网站怎么做淘客
  • 爱站网查询哪个网站的前台背景墙做的好
  • 辛集外贸网站建设个人网站怎么做淘宝客
  • 做网站空间需要多大开通公司网站怎么开通
  • 素材网站哪个值得买ps广告设计步骤
  • 统一企业执照信息管理系统手机端网站如何优化
  • 建设母婴网站的目的单页网站上传教程