zoukankan      html  css  js  c++  java
  • 进程基础复习02

    多进程代码
    from multiprocessing import Process (以下的方法与属性都是Process)
    方法
    进程对象.start() 开启一个子进程
    进程对象.join() 感知一个子进程的结束
    进程对象.terminate() 结束一个子进程
    进程对象.is_alive() 查看某个子进程是否还在运行

    属性
    进程对象.name 进程名
    进程对象.pid 进程号
    进程对象.daemon 值为True的时候,表示新的子进程是一个守护进程
    守护进程 随着主进程代码的执行结束而结束
    daemon 一定在start之前设置

     1 # multiprocess.Semaphore
     2 # 信号量
     3 
     4 # 某一段代码 同一时间 只能被n个进程执行
     5 # semaphore 信号量
     6 # import time
     7 # import random
     8 # from multiprocessing import Process
     9 # from multiprocessing import Semaphore
    10 #
    11 # def ktv(i,sem):
    12 #     sem.acquire()  # 获取钥匙
    13 #     print("%s走进ktv"%i)
    14 #     time.sleep(random.randint(1,5))
    15 #     print("%s走出ktv"%i)
    16 #     sem.release()
    17 #
    18 # if __name__ == "__main__":
    19 #     sem = Semaphore(4)
    20 #     for i in range(20):
    21 #         p = Process(target=ktv,args=(i,sem))
    22 #         p.start()
    23 
    24 # semaphore 其实内部也用了锁的机制,不过是多了一个计数器
    25 
    26 
    27 
    28 # 通过一个信号 来控制 多个进程 同时 执行或者阻塞 ,可以通过事件来做这件事
    29 
    30 # 一个信号可以使所有的进程都进入阻塞状态
    31 # 也可以控制所有的进程解除阻塞
    32 # 一个事件被创建之后,默认是阻塞状态
    33 
    34 # from multiprocessing import Event
    35 # e = Event()  # 创建了一个事件
    36 # print(e.is_set())  # 查看一个事件的状态,默认被设置成阻塞
    37 # e.set()  # 将这个事件的状态改为True
    38 # print(e.is_set())
    39 # print(123456)
    40 # e.wait(2)
    41 # e.wait()是依据e.is_set()的值来决定是否阻塞的,
    42 # 如果is_set()是False 那么wait就阻塞,如果是True,就不在wait()这个地方阻塞了。
    43 # print(98765432)
    44 
    45 # e.clear()  # 将这个事件的状态改为False
    46 # print(e.is_set())
    47 # e.wait(4)
    48 # print("堵了")
    49 
    50 # set 和 clear
    51     # 分别用来修改一个事件的状态  True或者False
    52 
    53 # is_set 用来查看一个事件的状态
    54 # wait   是依据事件的状态来决定自己是否阻塞
    55         #  False 阻塞    True 不阻塞
    56 
    57 # 灯的变化 就是事件状态的变化
    58 # 红绿灯事件
    59 # import time
    60 # import random
    61 # from multiprocessing import Event
    62 # from multiprocessing import Process
    63 # def car(e,i):
    64 #     if not e.is_set():
    65 #         print("car%i在等待"%i)
    66 #         e.wait()
    67 #     print("car%i已经通行"%i)
    68 #
    69 # def light(e):
    70 #     while True:
    71 #         if e.is_set():
    72 #             e.clear()
    73 #             print("33[31m红灯亮了33[0m")
    74 #         else:
    75 #             e.set()
    76 #             print("33[32m绿灯亮了33[0m")
    77 #         time.sleep(2)
    78 #
    79 # if __name__ == "__main__":
    80 #     e = Event()
    81 #     traffic = Process(target=light,args=(e,))
    82 #     traffic.start()
    83 #     for i in range(20):
    84 #         cars = Process(target=car,args=(e,i))
    85 #         cars.start()
    86 #         time.sleep(random.random())
    # 注:本文是根据老男孩课程内容整理而成的,本文仅供个人笔记使用,如果有侵犯,请联系我,我立即撤销。

     

  • 相关阅读:
    maven创建父子工程
    webservice之jersey简单实用
    EL表达式处理字符串
    oracle不等于1怎么查?
    day_07 搭建Tomcat服务器使用Servlet服务,后端接受前端请求过来的表单数据并使用
    Day_06 流程控制-循环结构-嵌套循环结构的原理解析
    Day05_流程控制02 循环结构
    day_5 流程控制 选择结构的两种常用语句的使用语法
    day_04 运算符详解
    day_03 变量的数据类型详解
  • 原文地址:https://www.cnblogs.com/pioneerLee/p/10318771.html
Copyright © 2011-2022 走看看