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

    例一

    #coding=utf-8
    from threading import Thread
    import os, time
    
    #计算密集型任务
    def work():
        res = 0
        for i in range(100000000):
            res *= i
    
    if __name__ == "__main__":
        l = []
        print("本机为",os.cpu_count(),"核 CPU")  # 本机为4核
        start = time.time()
        for i in range(4):
            p = Thread(target=work)  # 多进程
            l.append(p)
            p.start()
        for p in l:
            p.join()
        stop = time.time()
        print("计算密集型任务,多线程耗时 %s" % (stop - start))

    输出

    本机为 4 核 CPU
    计算密集型任务,多线程耗时 29.623388290405273

    例二

    import time
    import threading
    
    def task_thread(counter):
        print(f'线程名称:{threading.current_thread().name} 参数:{counter} 开始时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')
        num = counter
        while num:
            time.sleep(3)
            num -= 1
        print(f'线程名称:{threading.current_thread().name} 参数:{counter} 结束时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')
    
    
    if __name__ == '__main__':
        print(f'主线程开始时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')
    
        #初始化3个线程,传递不同的参数
        t1 = threading.Thread(target=task_thread, args=(3,))
        t2 = threading.Thread(target=task_thread, args=(2,))
        t3 = threading.Thread(target=task_thread, args=(1,))
        #开启三个线程
        t1.start()
        t2.start()
        t3.start()
        #等待运行结束
        t1.join()
        t2.join()
        t3.join()
    
        print(f'主线程结束时间:{time.strftime("%Y-%m-%d %H:%M:%S")}')

    输出

    主线程开始时间:2019-01-20 15:28:27
    线程名称:Thread-1 参数:3 开始时间:2019-01-20 15:28:27
    线程名称:Thread-2 参数:2 开始时间:2019-01-20 15:28:27
    线程名称:Thread-3 参数:1 开始时间:2019-01-20 15:28:27
    线程名称:Thread-3 参数:1 结束时间:2019-01-20 15:28:30
    线程名称:Thread-2 参数:2 结束时间:2019-01-20 15:28:33
    线程名称:Thread-1 参数:3 结束时间:2019-01-20 15:28:36
    主线程结束时间:2019-01-20 15:28:36
  • 相关阅读:
    数论--莫比乌斯函数
    数论--欧拉函数
    数论--素数
    数论--逆元
    数论--扩展欧几里得exgcd
    【NOIP 校内模拟】T1 优美的序列(二分+st表+卡常)
    【NOIP校内模拟】T2 飞越行星带(kruskal)
    【NOIP 2017】逛公园(最短路+记忆化搜索)
    【SDOI2009】Elaxia的路线(拓扑+最短路+dp)
    【BZOJ2750】【HAOI2012】道路(最短路+拓扑)
  • 原文地址:https://www.cnblogs.com/sea-stream/p/10295061.html
Copyright © 2011-2022 走看看