zoukankan      html  css  js  c++  java
  • 多线程

    进程:

      优点:同时利用多个cpu,能够同时进行多个操作

      缺点:消耗资源(重新开辟内从空间)

    线程:

      优点:共享内存,IO操作的时候m,创造并发操作

      缺点:抢占资源

    进程不是越多越好,cpu个数=进程个数

    线程也不是越多越好,请求上下文切换耗时

    线程锁 threading.Rlock  和 threading.lock

    threading.Event

    Event 是线程通信最间的机制之一,一个线程发送一个event 信号,其他的线程则等待这个信号。用于主线程控制其他线程的执行,Events 管理一个flag,这个flag可以使用set(),

    设置成True或者使用clear()重置为false,wait()则用于阻塞,在flag为True之前,flag默认为False

    Event.wait([timeout]):堵塞线程,直到Event对象内部标识位被设计为True或超时

    Event.set():将标识位设为True

    Event.clear():将标识伴设为False

    Event.isSet:判断标识位是否为True

    创建线程

    import time

    import threading

      def f0():

        

      def f1(a1):

        time.sleep(10)

        f0()

    t = threading.Thread(target=f1,args=(123,))

    t.setDaemon(True)   ##主线程是否等待子线程

    t.start()

    print('111')

    t.join()  # 一个一个执行,括号内可以传入参数,等待这个参数的时间如果上一个线程任务没有执行完,直接执行下一个

    print('222')

    event 事件

    import threading

    def do(event):

      print('红灯')

      event.wait()

      print('红灯')

    event_obj = threading.Event()

    for i in rang(10):

      t = threading.Thread(target=do,args=(event_obj,))

      t.start()

     

    event_obj.clear()

    inp =input('输出':)

    if inp =='True':

      event_obj.set()

  • 相关阅读:
    进程同步中的读者写者问题
    操作系统进程同步习题记录
    基于Python Flask的web日程管理系统
    面向对象第四单元及课程总结博客
    Vimtutor(中文版)学习笔记各章小结
    常用设计模式汇总说明
    图解Apache Mina
    Rocketmq 集群
    读《图解HTTP》有感-(HTTP首部)
    读《图解HTTP》有感-(与HTTP协作的WEB服务器)
  • 原文地址:https://www.cnblogs.com/huangguabushihaogua/p/9465325.html
Copyright © 2011-2022 走看看