6.03—035—周一

今日所学内容

    一、deamon:    守护进程

    二、互斥锁     ——重点

    三、IPC      进程间通讯

    四、生产者—消费者模型    ——重点

一、deamon:守护进程

1、什么是守护进程:

  进程是一个正在运行的程序,守护进程也是一个普通进程,意思是 一个进程可以守护另一个进程

  Eg:在程序运行过程中,打开了下载任务,当程序关闭时,下载任务也关闭了

  总结:b是a的守护程序,a是被守护的进程,a要是挂了,b也就随之结束了

2、使用场景:

  父进程交给了子进程一个任务,任务还没有完成父进程就结束了,子进程就没有继续执行的意义了

  Eg:qq 接收到一个视频文件,于是开启了一个子进程来下载,如果中途退出了qq,下载任务就没必须要继续运行了

二、互斥锁   ——重点

1、什么是互斥锁:

  互斥锁就是互相排斥的锁,当这个锁已经存在时,这个资源已经被锁了,其他进程就无法使用了。

  需要强调的是: 锁 并不是真的把资源锁起来了,只是在代码层面限制你的代码不能执行

2、为什么需要互斥锁:

  并发将带来资源的竞争问题当多个进程同时要操作同一个资源的时候,将会导致数据错乱的问题

3、解决方案

  方案一: 加join

    弊端 1)把原本并发的任务变成了串行,避免了数据错乱问题,但是效率降低了,这样就没必要开子进程了

       2)原本多个进程之间是公平竞争,join 执行的顺序就定死了,这是不合理的

  方案二: 给公共资源加互斥锁

    互斥锁:互相排斥的锁,我在这站着你就别过来,(就是说:如果这个资源已经被锁了,其他进程就无法使用了)

    互斥锁并不是真的把资源锁起来了,只是在代码层面限制你的代码不能执行,只能一次一次的执行,不能被同时执行两次

4、锁和join的额区别:

  1)join 是固定了执行顺序,会造成父进程等待子进程锁依然是公平竞争谁先抢到谁先执行,父进程可以做其他事情

  2)最主要的区别: join 是把进程的任务全部串行锁可以锁任意代码,可以自己调整粒度,就算一行代码也可以

  注意:

    1)同一把锁只能执行一次 acquire 如果没有执行 release 就再acquire,会锁死导致程序无法执行一次acquire必须对应一次release

    2)想要保住数据安全,必须保证所有的进程使用同一把锁

三、IPC  进程间通讯

通讯指的就是交换数据进程之间内存是相互隔离的,当一个进程想要把数据给另外一个进程,就需要考虑IPC

1、交换数据方式:

  管道: 只能单向通讯,数据都是二进制,在内存上运行

  文件: 在硬盘上创建共享文件

    缺点:速度慢

    优点:数据量几乎没有限制

  socket:

    编程复杂度较高

    共享内存:必须由操作系统来分配 要掌握的方式*

    优点: 速度快

    缺点: 数据量不能太大

2、共享内存的方式

  1)Manager 类  ——了解

    Manager提供很多数据结构 list dict等等

    Manager所创建出来的数据结构,具备进程间共享的特点

    需要强调的是 Manager创建的一些数据结构是不带锁的 可能会出现问题

  2)Queue 队列    ——重点

        帮我们处理了锁的问题

    队列是一种特殊的数据结构,先存储的先取出 就像排队 先进先出

    和堆栈相反,堆栈是先存储的后取出, 就像衣柜 桶装薯片 先进后出

   扩展:

    函数嵌套调用时,执行顺序是先进后出,也称之为函数栈;

    函数调用时 函数入栈,函数结束就出栈

   实例化 Queue

   q = Queue(i)   i表示存储的数量限制,不指定maxsize 则没有数量限制

    存储:q.put(block=True,timeout=2)

      如果容量已经满了,在调用put时将进入阻塞状态,直到有人从队列中拿走数据有空位置,才会继续执行

      timeout 表示阻塞的超时时间 ,超过时间还是没有值或还是没位置则抛出异常  仅在block为True有效

    获取:q.get(block=False)

      如果队列已经空了,在调用get时将进入阻塞状态,直到有人又存储了新的数据到队列中,才会继续

      block 表示是否阻塞 默认False 表示阻塞,当设置为False 并且队列为空时,抛出异常

四、生产者—消费者 模型    ——重点

1、什么是模型:就是解决某个问题套路

  产生数据的一方称之为生产者

  处理数据的一方称之为消费者

  例如: 爬虫 生活中到处都是这种模型,饭店 厨师就是生产者 你吃饭的人就是消费者

2、生产者与消费者之间有什么问题?要解决什么问题?

  生产者和消费,处理速度不平衡,一方快一方慢,导致一方需要等待另一方,造成资源浪费

  要解决:供需之间效率、速度不一致的问题

3、怎么用生产者—消费者模型 解决这个问题:

  1)解决思路:

    原本,双方是耦合 在一起,消费着必须等待生产者 生成数据完毕后才开始处理; 反过来如果消费者消费速度太慢,生产者必须等待其处理完毕后才能开始生成下一个数据

  2)解决方案:

    将双方分开来,一方专门负责生成数据,另一方专门负责处理这样一来数据就不能直接交互了,但是双方需要一个共同的容器,生产者将生成的数据放入容器,消费者从容器中取出数据这样就解决了双方能力不平衡的问题,做的快的一方可以继续做,不需要等待另一方

 

 

转载于:https://www.cnblogs.com/Chinesehan/p/10965625.html

用IT8卡和扫描仪制作打印机ICC的软件 使用Profile Prism生成打印机配置文件的简单步骤 由于扫描仪及扫描软件,打印机及打印软件的品牌众多,设置也相互不同。建议在阅读完下面简单步骤后,继续了解后面的详细说明。 1.运行打印软件(能识别色彩配置文件)。 2.打开打印设置,选择纸张的尺寸及打印机。 3.进入打印机设置,按下面详细建议来设置. 4.关闭所有的色彩管理及色彩配置文件. 5.打印printer-target-40.tif文件,图片约7.92 x 5.77英寸.如果打印机设置选“无色彩校准”,则打印"printer-target-bright.tif" 文件。 6.放置12小时。 7.沿着虚线切出色卡. 8.把IT8色卡和打印色卡放上扫描仪。 9.放上黑色背景纸。 10.盖上扫描仪 11.运行扫描软件,按建议来设置。 12.扫描色卡,查看图片确保色卡放正,没有倾斜。 13.运行Profile Prism,在Type of Device to Profile中选Printer. 14.导入色卡图片,标记IT8色卡的四角。 15.评价出现的信息(暴光,X色块等). 16.选Printer Target. 17.标记打印色卡的四角。 18.评价出现的信息(暴光,X色块等). 19.其他选择如下: Type of device to profile选already set to printer Reference target选R070212.txt Profile description键入打印机型号,纸张名等 File name: 按"..." and 键入色彩配置文件名。 Profile for: highest accuracy White balance选 N/A Tone reprod. curves选 N/A Manual adjustments选normal或0 20.按Create Profile,生成色彩配置文件. 注意:使用色彩配置文件,必须用步骤2和3的设置,同时在打印机的属性里颜色管理中添加生成的色彩配置文件.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值