7.16 进程 信号量

01.复习内容

子进程里面不能用 input  明天认真看 ,天热有点浮躁!

 1 #!/usr/bin/env python
 2 #!--*--coding:utf-8 --*--
 3 #[email protected]    :2018/7/16 18:46
 4 #[email protected]   TrueNewBee
 5
 6 """
 7     我把之前的项目误删了,重新建个项目,
 8     还好以前部分代码用sublime编写的还有存档
 9 """
10 #多进程代码
11
12 # from multiprocessing import Process
13 #方法
14     #进程对象.start()       开启一个子进程
15     #进程对象.join()        感知一个子进程的结束
16     #进程对象.terminate()   结束一个子进程
17     #进程对象.is_alive()    查看某个子进程是否还在运行
18 #属性
19     #进程对象.name      进程名
20     #进程对象.pid       进程号
21     #进程对象.daemob    值为True的时候,表现新的子进程是一个守护进程
22         #守护进程   随着主进程代码的执行结束而结束
23         #一定在start之前设置
24
25 #from  multiprocessing import Lock
26
27 #l = Lock()
28 #l.acquire()    #拿钥匙
29 #会造成数据不安全的操作
30 #l.release()    #换钥匙

# 信号量   pep8的标准还得适应,,真难

 1 # !/usr/bin/env python
 2 # !--*--coding:utf-8 --*--
 3 # [email protected]    :2018/7/16 19:01
 4 # [email protected]   TrueNewBee
 5
 6
 7 # 多进程中的组件
 8 # 一套资源  同一时间 只能被n个人访问
 9 # 某一段代码 同一时间 只能被n个进程执行
10 import time
11 import random
12 from multiprocessing import Process
13 from multiprocessing import Semaphore
14
15
16 def ktv(arg, sem1):
17     sem1.acquire()   # 获取钥匙
18     """模拟唱歌"""
19     print("%s走进ktv"%arg)
20     time.sleep(random.randint(1, 5))
21     print("%s走出ktv"%arg)
22     sem.release()
23
24
25 if __name__ == ‘__main__‘:
26     sem = Semaphore(4)
27     for i in range(20):
28         p = Process(target=ktv, args=(i, sem))
29         p.start()

原文地址:https://www.cnblogs.com/zhen1996/p/9319837.html

时间: 2024-10-10 09:10:47

7.16 进程 信号量的相关文章

第三季-第16课-信号量互斥编程

第16课-信号量互斥编程 16.1 公示栏问题(问题引入) 1. 问题描述 这里面我们举一个小例子.在一个班级里就有一个公示栏,A同学想写“数学课考试”,B同学想写“英语课取消”.但是有一个时间,A同学只写下了“数学课”三个字,没来得及写后面的内容就出去了,但是这个时候B同学来写下了“英语课取消”.这样让同学们看来就成了“数学课英语课取消”,给班级的其他同学造成了歧义. 这也就是我们说的同时访问一个资源,造成了,数据的混乱.若是有多个进程同时访问一个资源,同样会造成这个问题. 2. 问题程序化

8.16 进程管理 ftp nfs服务器

挂载U盘 1.检查存储设备名称 fdisk -l  查看自己的设备.用来挂载 2.挂载 sudo mount /dev/sdb1 /mnt dd:拷贝光驱 也可以用来拷贝文件 进程管理 ctrl+z暂停到后台 jobs  可以看到编号 fg     把暂停的运行起来,并且在前台运行 bg    把暂停的运行起来,并且在后台运行 如果一开始就让程序在后台运行 ,需要在后面加上 & KILL  进程id  对进程处理 kill -l  查看kill选项 kill -9    进程id        

python 管道 事件 信号量 进程池(map/同步/异步)回调函数

####################总结######################## 管道:是进程间通信的第二种方式,但是不推荐使用,因为管道会导致数据不安全的情况出现 事件:当我运行主进程的时候 需要子执行某个进程后 需要的返回值时 可以使用 信号量:互斥锁同时只允许一个线程更改数据,而信号量Semaphore是同时允许一定数量的线程更改数据 . 内部维护了一个计数器,acquire-1,release+1,为0的时候,其他的进程都要在acquire之前等待 进程池:  进程的创建和销

linux驱动current,引用当前进程,及task_struct(转)

尽管内核模块不象应用程序一样顺序执行, 内核做的大部分动作是代表一个特定进程的. 内核代码可以引用当前进程, 通过存取全局项 current, 它在 <asm/current.h> 中定义, 它产生一个指针指向结构 task_struct, 在 <Linux/sched.h> 定义. current 指针指向当前在运行的进程. 在一个系统调用执行期间, 例如 open 或者 read, 当前进程是发出调用的进程. 内核代码可以通过使用 current 来使用进程特定的信息, 如果它

进程与进程描述符(task_struct)

一. 进程 进程(Process) 计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代面向线程设计的计算机结构中,进程是线程的容器.程序是指令.数据及其组织形式的描述,进程是程序的实体. --------------------------------------------------------------- 释义:一段程序的执行过程 特征:动态.独立.异步.并发 结构特征

System V IPC(2)-信号量

一.概述                                                    System V信号量与System V消息队列不同.它不是用来在进程间传递数据.它主要是来同步进程的动作. 1.一个信号量是一个由内核维护的整数.其值被限制为大于或等于0. 2.可以在信号量上加上或减去一个数量. 3.当一个减操作把信号量减到小于0时,内核会阻塞调用进程.直到另一操作把信号恢复,阻塞才会解除. 4.常用的信号量是二进制信号量.即操作0和1来控制临界区. 二.函数接口

Linux下用信号量实现对共享内存的访问保护

转自:http://www.cppblog.com/zjl-1026-2001/archive/2010/03/03/108768.html 最近一直在研究多进程间通过共享内存来实现通信的事情,以便高效率地实现对同一数据的访问.本文中对共享内存的实现采用了系统V的机制,我们的重点在于通过信号量来完成对不同进程间共享内存资源的一致性访问,共享内存的具体方法请参见相关资料,这里不再赘述. 首先我们先实现最简单的共享内存,一个进程对其更新,另一个进程从中读出数据.同时,通过信号量的PV操作来达到对共享

Linux程序设计学习笔记----System V进程间通信(信号量)

关于System V Unix System V,是Unix操作系统众多版本中的一支.它最初由AT&T开发,在1983年第一次发布,因此也被称为AT&T System V.一共发行了4个System V的主要版本:版本1.2.3和4.System V Release 4,或者称为SVR4,是最成功的版本,成为一些UNIX共同特性的源头,例如"SysV 初始化脚本"(/etc/init.d),用来控制系统启动和关闭,System V Interface Definitio

线程同步(三)—— 信号量

线程信号量和进程信号量类似,Unix提供了两套与信号量有关的API.POSIX和System V.两套API都可以在线程和进程中使用. 进程中使用信号量是为了保证临界资源的控制,线程中已经有了互斥锁,而且还有条件变量对线程进行控制,信号量是不是就有点多余了呢? 其实在进程中也是可以使用互斥锁和控制变量,信号量和线程锁看似类似,但实际上还是有本质区别. 线程锁:只能对临界资源进行01操作,CPU在某个时刻只允许一个线程占用.谁加锁谁解锁. 信号量:PV操作,对结构体内计数器进行增减,允许多个线程进