1. # 实现的内容 模拟购票 20个人买,就有一张购票查,的时候大家都看到,但是购买只能一人购买成功
    #利用互斥锁
    # from multiprocessing import Process,Lock
    # import os,random,json,time
    # def search():
    # with open('db.txt',encoding= 'utf-8')as f:
    # dic = json.load(f) #反序列化 变成字典 因为文件里内容本身是字符串
    # print('%s剩余的票数%s'%(os.getpid(),dic['count']))
    # def get():
    # with open('db.txt',encoding='utf-8')as read_f:
    # dic = json.load(read_f)
    # if dic['count']>0:
    # dic['count']-=1
    # time.sleep(random.randint(1,3))
    # with open('db.txt','w',encoding='utf-8')as write_f:
    # json.dump(dic,write_f) ##把字典写入文件 并且以字符串的形式
    # print('%s抢票成功'% os.getpid())
    #
    # def task(mutex):
    # search()
    # mutex.acquire() # acquire 获得 互斥获得 加锁
    # get()
    # mutex.release() # 互斥释放 解锁
    # if __name__=='__main__':
    # mutex = Lock()
    # for i in range(20):
    # p = Process(target=task,args=(mutex,))
    # p.start()
    # #p.join() # 这个效果不能让其他人看见有票
    ##文件操作 文件的内容是默认存在的类型是字符串,而且里面用的json 必须是双引号。
    # mutex 互斥
    # mutex = Lock
    # mutex.acquire() 加锁
    # mutex.release 解锁
  2.  
  3. # db.txt
    # {"count": 1}
    # ----------线程的加锁的两种方法
    # from threading import Thread,Lock
    # import time
    # n=100
    #
    # def task():
    # # global n
    # # mutex.acquire()
    # # temp=n
    # # time.sleep(0.1)
    # # n=temp-1
    # # mutex.release()
    #
    # global n
    # with mutex:
    # temp=n
    # time.sleep(0.1)
    # n=temp-1
    # if __name__ == '__main__':
    # mutex=Lock()
    # t_l=[]
    # for i in range(100):
    # t=Thread(target=task)
    # t_l.append(t)
    # t.start()
    # for t in t_l:
    # t.join()
    # print(n)
    # ---------------
    ###生产者和消费者 初级供给 实现的并发
    # from multiprocessing import Process,Queue
    # import os,random,time
    # def producer(q):
    # for i in range(10):
    # res = '包子%s'%i
    # time.sleep(0.5)
    # q.put(res)
    # print('%s生产了%s'%(os.getpid(),res))
    # ###time.sleep(random.randint(2,3)) #如果是启用此行 因为comsumer 的时间比较充裕比生产的
    # ##供远远小于求 所以出现串行,生产出一个就立马吃一个
    #
    # def consumer(q):
    # while True:
    # res= q.get()
    # if res is None:
    # break
    # print('%s吃了%s'%(os.getpid(),res))
    # time.sleep(random.randint(2, 3))
    # if __name__== '__main__':
    # q = Queue()
    # p = Process(target=producer,args=(q,))
    # c = Process(target=consumer,args=(q,))
    # p.start()
    # c.start()
    # p.join()
    # q.put(None)
    # print('主')
  4.  
  5. import queue #线程队列
  6.  
  7. # # 队列 线程的排序
    # q=queue.Queue(4)
    # q.put({'a':1})
    # q.put('xxxxx')
    # q.put(3)
    # q.put(4)
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # 1进程的排序
    # from multiprocessing import Queue
    # q = Queue(3)
    # q.put(3)
    # q.put('wang')
    # q.put({'wang':777})
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # 3
    # wang
    # {'wang': 777}
    # 进程引用序列 从前到后依次取值
    # 变量=Queue(数字存几个)
    # 变量.put(任意数据类型)
    # 变量.get()
  8.  
  9. 2#优先级队列 从小到大的排列
    # q=queue.PriorityQueue(4)
    # q.put((10,{'a':1}))
    # q.put((-1,'xxxxx'))
    # q.put((0,3))
    # q.put((4,))
    #
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # print(q.get())
    #
    # (-1, 'xxxxx')
    # (0, 3)
    # (4,)
    # (10, {'a}
    # 3 堆栈 排序从后到前排序
    # q=queue.LifoQueue(4)
    # q.put({'a':1})
    # q.put('xxxxx')
    # q.put(3)
    # q.put(4)
    #
    # print(q.get())
    # print(q.get())
    # print(q.get())
    # print(q.get())
  10.  
  11. 进程 线程的顺序
  1. 守护进程:两个子进程,其中一个是守护子进程,一个主进程, 守护进程结束:是在主进程代码一结束就结束,
    守护线程:两个子线程,其中一个是守护子线程,一个是主线程,守护线程结束:是在非守护子线程结束就结束。

day 34 进程线程排序 抢票 初级生产者消费者的更多相关文章

  1. 进程部分(IPC机制及生产者消费者模型)和线程部分

    进程部分 一:进程间通信IPC机制:由于进程之间的内存空间是相互隔离的,所以为了进程间的通信需要一个共享的内存空间, 但是共享带来的问题是数据在写的时候就不安全了,所以需要一种机制既有能共享的内存 空 ...

  2. 进程Queue、线程Queue、堆栈、生产者消费者模型

    没学队列之前,可以用文件实现进程之间通信 但是有2个问题: 1. 速度慢:文件是保存在硬盘空间 2. 为了数据安全要加锁(处理锁是一件很麻烦的事,容易死锁,建议自己轻易不要处理锁) 队列:队列是基于管 ...

  3. python并发编程之多进程(二):互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型

    一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终 ...

  4. python开发进程:互斥锁(同步锁)&进程其他属性&进程间通信(queue)&生产者消费者模型

    一,互斥锁,同步锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的, 竞争带来的结果就是错乱,如何控制,就是加锁处理 part1:多个进程共享同一打印终 ...

  5. python网络编程--进程(方法和通信),锁, 队列,生产者消费者模型

    1.进程 正在进行的一个过程或者说一个任务.负责执行任务的是cpu 进程(Process: 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在 ...

  6. 并发编程 - 进程 - 1.队列的使用/2.生产者消费者模型/3.JoinableQueue

    1.队列的使用: 队列引用的前提: 多个进程对同一块共享数据的修改:要从硬盘读文件,慢,还要考虑上锁: 所以就出现了 队列 和 管道 都在内存中(快): 队列 = 管道 + 上锁 用队列的目的: 进程 ...

  7. Linux进程通信之共享内存实现生产者/消费者模式

    共享内存 共享内存是内核为进程创建的一个特殊内存段,它将出现在进程自己的地址空间中,其它进程可以将同一段共享内存连接(attach)到自己的地址空间.这是最快的进程间通信方式,但是不提供任何同步功能( ...

  8. java 线程池、多线程实战(生产者消费者模型,1 vs 10) 附案例源码

    导读 前二天写了一篇<Java 多线程并发编程>点我直达,放国庆,在家闲着没事,继续写剩下的东西,开干! 线程池 为什么要使用线程池 例如web服务器.数据库服务器.文件服务器或邮件服务器 ...

  9. Linux下进程的同步相互排斥实例——生产者消费者

    linux下的同步和相互排斥 Linux sync_mutex 看的更舒服点的版本号= = https://github.com/Svtter/MyBlog/blob/master/Linux/pth ...

随机推荐

  1. Binary Gap(二进制空白)

    中文标题[二进制空白] 英文描述 A binary gap within a positive integer N is any maximal sequence of consecutive zer ...

  2. laravel调度任务

    <?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule;use Illuminate\Foundation ...

  3. php文件处理函数

    //basename的使用$path='test/abc.jpg'; echo basename($path);// echo '<br/>'; echo basename($path,' ...

  4. 1.2 面向对象 Object-oriented

    前导课程 1.UML(统一建模语言) 2.OOAD Concept(Object-oriented Analysis and Design 概念) 3.Design Pattern(设计模式) 4.面 ...

  5. python记录_day05 字典

    字典 字典由花括号表示{ },元素是key:value的键值对,元素之间用逗号隔开 特点:1.字典中key是不能重复的 且是不可变的数据类型,因为字典是使用hash算法来计算key的哈希值,然后用哈希 ...

  6. 『cs231n』卷积神经网络工程实践技巧_下

    概述 计算加速 方法一: 由于计算机计算矩阵乘法速度非常快,所以这是一个虽然提高内存消耗但是计算速度显著上升的方法,把feature map中的感受野(包含重叠的部分,所以会加大内存消耗)和卷积核全部 ...

  7. 【PowerDesigner】【9】禁止Name与Code同步

    问题:修改了某个字段的name,其code也跟着修改 步骤:Tools→General Options..→Dialog→取消勾选“Name to Code mirroring”复选框 参考博客: 1 ...

  8. 【PowerDesigner】【3】字段添加注释和默认值

    问题:最开始生成的Table,表头有些字段没有 解决方案: 1,打开表(双击左键),点击下图圈起来的图标 2,找到comment(注释),勾选 3,找到default value(默认值),勾选 4, ...

  9. PAT 1050 String Subtraction

    1050 String Subtraction (20 分)   Given two strings S​1​​ and S​2​​, S=S​1​​−S​2​​ is defined to be t ...

  10. 函数使用五:MIR7 发票预制 BAPI_INCOMINGINVOICE_PARK

    引自:http://blog.csdn.net/champaignwolf/article/details/51422329 FUNCTION zincominginvoice_park. *&quo ...