• 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")#主进程

    多进程的联系。

  • 相关阅读:
    BOM和DOM
    js
    前端css
    html介绍
    线程锁&&信号量&&GIL&&线程定时器&&进程池与线程池&&协程
    对于数据库的操作以及配置
    string 迭代器
    递归
    python 操作mysql数据库
    Python编辑器IDLE傻瓜入门
  • 原文地址:https://www.cnblogs.com/ArmoredTitan/p/7206312.html
Copyright © 2020-2023  润新知