博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
进程中的信号量
阅读量:7051 次
发布时间:2019-06-28

本文共 1427 字,大约阅读时间需要 4 分钟。

# 多进程中的组件    # 信号量        # 举例说概念:现在有4个门,只能进4个人。一套资源同一时间只能被N个人访问。这里将N个人比作N个进程,一套资源这里比作代码            # 某一段代码 同一时间只能被N个进程执行        # 有一个房子,房子就是要保护的代码(限定进程访问的代码),房子只有一个门,门上有一串钥匙,有多少把钥匙是你规定的,此时当有一个进程来了,            # 这个进程拿一把钥匙然后开门进到了房子中,此时其他进程来了,都会拿钥匙进入到房子里,知道其他进程来时发现没有钥匙了就无法打开门进去了            # 只有当房子里的进程出来了,将钥匙又放到了门上,其他在房子门口等的进程中有一个进程就可以拿到这把钥匙进到屋里,这就是信号量的概念        # 同一段代码,只能被N个进程执行,当超过了N个进程要执行这段代码时,超过的进程需要等待前面的进程执行这段代码结束后,归还入口数,后面的进程才可以进入# import time# import random# from multiprocessing import Process## # 下面的例子,想要模拟一个现象是,比如ktv只有4个,一个ktv只能进去一个人(一个进程)。但是下面的例子实际上,20个进程一下子全部都进入到了ktv中# def ktv(i):#     print(' %s 走进ktv' % i)#     time.sleep(random.randint(1, 5))    # 模拟在ktv唱歌的时间#     print(' %s 走出ktv' % i)## if __name__ == '__main__':#     for i in range(20):#         p = Process(target=ktv, args=(i,))#         p.start()import timeimport randomfrom multiprocessing import Processfrom multiprocessing import Semaphore   # 导入进程的信号量模块# 下面的例子,想要模拟一个现象是,比如ktv只能进入4个人,同一时间只能有4个进程进去def ktv(i, sem):    sem.acquire()   # 拿钥匙,拿一个钥匙就会少一个钥匙,当拿到钥匙没有时,再进来的进程就会阻塞在这里,只有当前面拿钥匙的进程将钥匙归还,当前进程才能拿到钥匙向下执行    print(' %s 走进ktv' % i)    time.sleep(random.randint(1, 5))    # 模拟在ktv唱歌的时间    print(' %s 走出ktv' % i)    sem.release()   # 还钥匙if __name__ == '__main__':    sem = Semaphore(4)   # 实例化一个信号量,参数表示有几把钥匙,    for i in range(20):        p = Process(target=ktv, args=(i, sem))        p.start()

 

转载于:https://www.cnblogs.com/whylinux/p/9818879.html

你可能感兴趣的文章
你真的了解回流和重绘吗
查看>>
Coding 的回忆
查看>>
【刷算法】LeetCode.236- 二叉树的最近公共祖先
查看>>
聊聊spring cloud的HystrixAutoConfiguration
查看>>
Android字节码插桩采坑笔记
查看>>
iOS中使用Protocol Buffer
查看>>
大神解析-ZooKeeper基本原理
查看>>
网络层安全认知
查看>>
有趣的二进制2—高效位运算
查看>>
Hive 调优
查看>>
带你五步学会Vue SSR
查看>>
Angular4中自定义管道
查看>>
Android NDK开发之旅26 C++ STL
查看>>
从源码全面剖析 React 组件更新机制
查看>>
MySQL 去重SQL
查看>>
问题备忘: 服务器重启后,导致freeswitch的internal的profile无法启动
查看>>
Java虚拟机之Class类文件结构
查看>>
Service销毁流程
查看>>
Elasticsearch的入门使用
查看>>
An error occurred uploading to the iTunes Store.
查看>>