zoukankan      html  css  js  c++  java
  • python学习第三十一节

    event模块


    event.wait() 等待相当于标志位为False。()内可以传参数数字,为几秒。
    event.set()给另一个线程传标志位True。

    队列 queue
    和列表类似,但是函数内置了互斥锁,保证了线程安全。是具有线程安全的数据结构。

    put传进去,get取出来,取是先进先出的方法,吃了拉,而且queue没有别的方法。

    上图这种情况没有意义,最后一次get取不到值在等待put 单线程写到后面的put并不能运行,需要再
    开一个线程。
    取值之后,queue就少了一个。

    如上图put里写block=False参数,当queue满了在添加,将报错而不是卡死。

    上图如上上图效果一样,写法不一样。

    如上图,get参数可以写block=False 当取不到值的时候立刻报错。

    上图和上上图效果一样,写法不一样。

    put之后加入一个join可以阻塞该子线程后面的程序,然后另一个线程取出来需要每次都要task_done()
    表示执行完毕,当所有任务完成之后会继续上一个线程的后面任务。

    q.empty()

    如果queue为空布尔值为True

    priority优先级

    如上图,设置优先级的例子。

    生产者消费者模型

    多进程

     1 from multiprocessing import Process#import
     2 import os
     3 import time
     4 
     5 
     6 def info(name):
     7     '''打印父进程PID和进程PID'''
     8     print("name:", name)#打印名字
     9     print('parent process:', os.getppid())#获取父进程ID
    10     print('process id:', os.getpid())#获取子进程ID
    11     print("------------------")
    12     time.sleep(1)
    13 
    14 
    15 def foooooo(name):
    16     '''调用info'''
    17     info(name)
    18 
    19 
    20 if __name__ == '__main__':
    21     info('main process line')
    22 
    23     process_one = Process(target=info, args=('alvin',))#创建一个进程
    24     process_two = Process(target=foooooo, args=('egon',))
    25     process_one.start()#激活这个进程
    26     process_two.start()
    27 
    28     process_one.join()#进程的join和线程的join是一样的,子进程运行结束之后运行主进程
    29     process_two.join()
    30 
    31     print("ending")#主进程

    多进程的联系。

  • 相关阅读:
    Python记录_day21 模块
    python记录day_20 多继承
    python记录_day019 类的约束 异常处理 日志
    python记录_day018 md5加密
    python记录_day18 反射 判断函数与方法
    python记录_day17 类与类之间的关系
    python记录_day16 类的成员
    实验0 了解和熟悉操作系统
    IT就业·软件工程之我见
    递归下降分析程序
  • 原文地址:https://www.cnblogs.com/ArmoredTitan/p/7206312.html
Copyright © 2011-2022 走看看