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

    进程一组资源的集合 

    线程最小执行单位

    单线程 一个人干活  线程和线程之间是相互独立的

    多线程,多个人干活  

    线程是最小的单位  ,一个进程包含多个线程  

    一个python文件就是一个进程 

    单线程实现代码 

    import threading
    import time
    def ces():
    print('打算卫士 ')
    time.sleep(2)

    def xiyify():
    print('洗衣服')
    time.sleep(3)
    def zuofan():
    print('做饭')
    time.sleep(1)
    star=time.time()
    ces()
    xiyify()
    zuofan()
    end=time.time()
    print(end-star)
    多线程实现代码
    import threading
    import time
    def ces():
    print('打算卫士 ')
    time.sleep(2)

    def xiyify():
    print('洗衣服')
    time.sleep(3)
    def zuofan():
    print('做饭')
    time.sleep(1)
    stars=time.time()
    C=threading.Thread(target=ces)
    C1=threading.Thread(target=xiyify)
    C2=threading.Thread(target=zuofan)
    C.start()
    C1.start()
    C2.start()
    end_time=time.time()
    print(end_time-stars)

    思考多线程有几个线程????????????什么时候用到多线程??/多线程代码有三个线程为什么执行时间才不到1s执行 ?
    有四个线程 一个主线程 三个多线程
    当执行脚本时间太长需要用到多线程节省时间
    因为 我们的代码结果是主线程的时间 想要看到多线程的执行时间就要更改代码,让主线程等多线程执行完毕在执行主线程

    import threading
    import time
    def ces():
    print('打算卫士 ')
    time.sleep(2)

    def xiyify():
    print('洗衣服')
    time.sleep(3)
    def zuofan():
    print('做饭')
    time.sleep(1)
    stars=time.time()
    C=threading.Thread(target=ces)
    C1=threading.Thread(target=xiyify)
    C2=threading.Thread(target=zuofan)
    C.start()
    C1.start()
    C2.start()
    #先让你们都干活,干完活了在等待
    C.join()#加等待时间等待
    C1.join()#加等待时间等待
    C2.join()#加等待时间等待
    end_time=time.time()
    print(end_time-stars)
    起一个线程写这么多的代码,那我们起一百个线程,写一百行是不是代码很庞大,这时候需要一个好的方法  
    import threading,time,random
    def exce():
    print(threading.current_thread())#看当前哪一个进程在运行
    time.sleep(random.randint(1,5))
    print('洗衣服')
    for i in range(10):#你要起多少线程就写多少
    t=threading.Thread(target=exce)
    t.start()
    这时候思考如何让主线程等待主线程呢
    思路获取到当前能存活多少线程  ,获取到了当前的线程数,写一个死循环判断他,等于一的时候,子线程代表运行完了 

    两种方法
    等多个子线程 执行结束,把启动的子线程放到list里 在循环调用t.jion()
    import threading,time,random
    thread_list=[]
    def exce():
    print(threading.current_thread())#看当前哪一个进程在运行
    time.sleep(random.randint(1,5))
    print('洗衣服')
    for i in range(10):#你要起多少线程就写多少
    t=threading.Thread(target=exce)
    thread_list.append(t)
    t.start()

    for t in thread_list:
    t.join()
    #第二种方法
    import threading,time,random
    def exce():
    print(threading.current_thread())#看当前哪一个进程在运行
    time.sleep(random.randint(1,5))
    print('洗衣服')
    for i in range(10):#你要起多少线程就写多少
    t=threading.Thread(target=exce)
    t.start()
    while threading.active_count()!=1:
    pass
  • 相关阅读:
    开启 clr enabled
    索引查看
    nginx 安装
    mysql中int(10)与int(11)有什么区别吗?
    1.安卓开发基础1~6笔记
    Vue项目搭建基础之Vue-cli模版测试
    alert执行顺序
    介绍call和apply
    a链接易混淆与form表单简易验证用法详解
    js正则知识点
  • 原文地址:https://www.cnblogs.com/weilemeizi/p/13903725.html
Copyright © 2011-2022 走看看