zoukankan      html  css  js  c++  java
  • Python的定时器与线程池

    定时器执行循环任务:

    • 知识储备
    1.   Timer(interval, function, args=None, kwargs=None)
    2. interval ===》 时间间隔 单位为s
    3. function ===》 定制执行的函数
    • 使用threading的 Timer 类
    1. start() 为通用的开始执行方法
    2. cancel ()为取消执行的方法
    • 普通单次定时执行
    from threading import Timer
    import time
    # 普通单次定时器
    def handle():
    print("普通单次定时器 函数被执行");
    t1=Timer(interval=1,function=handle);
    t1.start();

    定时循环执行

    from threading import Timer
    import time
    # 循环定时器
    def loop_handle():
    print("循环定时器定时器 函数被执行");
    global t2;
    t2=Timer(interval=1,function=loop_handle);
    t2.start();
    
    t2=Timer(interval=1,function=loop_handle);
    t2.start();
    
    time.sleep(5);# 对主线程停止5s;
    t2.cancel(); # t2 在主main 线程阻塞5s t2执行5s
    

      

    线程池技术

    基本概念

    • 在程序启动时就创建好若干个线程,并保存到内存中 。 当线程启动并执行完成之后,并不做销毁处理,而是等待下次再使用。

        i:节约了创建进程 销毁进程的时间,大大降低进程的开销

    • 实现
    1. 抢占式:线程池中的线程执行顺序不固定。该方式使用 ThreadPoolExecutor的 submit ()方法实现。
      1.       具体执行那个线程是随机的, 并且执行的函数也可以不一致
      2.   那个线程执行的函数出现了崩溃,不影响整个线程池的其他线程的运行
      3.   使用with 语法 进行简化操作
    • 非抢占式:线程将按照调用的顺序执行 。 此方式使用 ThreadPoolExecutor 的 map ()方法来实现
    1.   每个线程处理的函数都是一致的,一个线程执行的函数崩溃,整体就崩溃

    基本code

    from concurrent.futures import ThreadPoolExecutor # 导入线程池
    import time
    
    def printName(name):
    print("名字",name);
    time.sleep(2);
    nameList=['Tom','jirl','steam'];
    # 抢占式线程池
    start2=time.time();
    with ThreadPoolExecutor(3) as executor:
    for i in nameList:# 因为每次执行的函数不一致,所以参数要分开传递
    executor.submit(printName,i); 
    end2=time.time();
    print("2 speed:",str(end2-start2));
    #非抢占式线程池


    线程数量公式:
    公式

    经验
    (1 )初始化一定数量的线程。
    ( 2 )在多次实验中递增或递减线程数量 ,测试运行性能 。
    (3 )确定最忧 的线程数量。

  • 相关阅读:
    外面下雨了,凉快了
    无聊,听说wow五区开放了,注册个人物去玩玩
    草原游记二大青山上
    终于拿到钥匙了
    刚看到一个论坛的帖子,一位大哥说到真是话糙理不糙,佩服
    草原随感录武川印象
    第一次网上买点卡
    看到小说<搜神新记>里面巨搞笑的一段,是共工和太章打完架后,把事先被昏迷的人叫醒的事情
    昨天晚上很生气很生气。。。。
    感于"一生所爱"
  • 原文地址:https://www.cnblogs.com/dgwblog/p/11517910.html
Copyright © 2011-2022 走看看