zoukankan      html  css  js  c++  java
  • 定时器 线程池进程池

    定时器

    • 可以指定线程多久后启动,(并且他是一个异步的线程,也就是并发)
    from threading import Timer
    """
    这个相当于开启了一个可以定义时间的线程,不需要导入Thread模块了,Timer模块可以直接创建一个线程
    """
    def foo(name):
        print(f"{name}定的时间到了,开启啦")
    
    t = Timer(3,foo,('xc',))
    t.start()
    

    线程池进程池

    • 线程池进程池就是控制线程进程的数据量,并且不会回收,会放在池里面重复使用这几个线程进程.
    • 线程池进程池不同于信号量,这是两个东西,池是控制线程的总数量,以自己控制的数量去操作很多条任务,信号量是控制线程的并发的运行的数量,不会控制线程的总数量

    什么时候使用池

    • 单个任务处理时间短
    • 所要处理的这种任务数量多

    使用池的好处

    • 不用重复的去创建回收线程进程,减少了系统资源的开销以及时间上的开销
    • 如果不使用线程池,就会因为制造了大量线程消耗内存,和线程太多,造成cpu过渡切换
    • 总的来说就是节约系统资源,以及重复造线程进程的开销,信号量是没有这个好处的,他只是让同一段代码,多少个进程可以去操作他.
    from concurrent.futures import ThreadPoolExecutor,ProcessPoolExecutor
    # 导入一个线程池模块和一个进程池模块,这两个模块的使用方法是一样的
    import time
    
    result_lis = []
    def foo(user,pwd):
        time.sleep(0.3)
        print(f"你的账号为{user},你的密码为{pwd}")
        return pwd * 10
    def back_main(x):
        result_lis.append(x.result())
    
    tpool = ThreadPoolExecutor(4)
    for i in range(12):
        res = tpool.submit(foo,'xc',i).add_done_callback(back_main) # 传值不是以元组的形式传值
        # print(res.result())
    tpool.shutdown()
    print("结束")
    print(result_lis)
    
    
  • 相关阅读:
    halcon算子翻译——dev_set_paint
    Halcon算子翻译——dev_set_lut
    JDK、JRE、JVM各自是什么、以及什么关系
    dict 增删改查
    str 操作方法
    python基础_格式化输出(%用法和format用法)
    python spilt()函数的使用方法
    iterable- 什么是可迭代对象
    list 增 删 改 查 及 公共方法
    python 基本数据类型
  • 原文地址:https://www.cnblogs.com/xiongchao0823/p/11552337.html
Copyright © 2011-2022 走看看