美文网首页
Python-threading使用

Python-threading使用

作者: 小喜_ww | 来源:发表于2023-02-15 11:49 被阅读0次

    一、多线程

    多线程类似于同时执行多个不同程序,多线程运行有如下优点:

    · 使用线程可以把占据长时间的程序中的任务放到后台去处理。
    · 用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。
    · 程序的运行速度可能加快。
    · 在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

    Python3 通过标准库 threading 提供对线程的支持。threading 模块提供的方法:

    threading.Thread(): 表示控制线程的类。该类可以以有限的方式安全地进行子类化。
    threading.Timer(): 在指定的时间间隔过后执行函数的线程
    threading.currentThread(): 返回当前的线程变量。
    threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
    threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
    threading.ThreadError(): 针对各种与线程相关的错误引发。请注意,许多接口使用RuntimeError而不是ThreadError。
    

    线程模块提供Thread类来处理线程,Thread类提供了以下方法:

    threading.Thread(group=None, target =None, name=None, args =(), kwargs = {})
    参数List:
        group应该None,在实现ThreadGroup类时保留用于将来的扩展。
        target是run()方法调用的可调用对象。默认为None,意味着什么都没有被调用。
        name是线程名称。默认情况下,唯一名称由"Thread-N"形式构成,其中N是小十进制数。
        args是目标调用的参数元组。默认为()。
        kwargs是目标调用的关键字参数字典。默认为{}。
    如果子类重写构造函数,则必须确保在对线程执行任何其他操作之前调用基类构造函数(Thread .__ init __())。
    
    run(): 用以表示线程活动的方法。
    start():启动线程活动。
    join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。
    isAlive(): 返回线程是否活动的。
    getName(): 返回线程名。
    setName(): 设置线程名。
    

    二、实例

    import threading
    import time
    
    def next():
            print('在%s,正在看电影' % time.ctime())
            time.sleep(1.5)
    
    
    def main():
    
        next_threads = []  # 用来存放执行next函数线程的列表
    
        for i in range(1,10):  # 创建1个线程用于next(),并添加到next_threads列表
            t = threading.Thread(target=next) # 执行的函数如果需要传递参数,threading.Thread(target=函数名,args=(参数,逗号隔开))
            next_threads.append(t)
    
        for i in next_threads:  # 启动存放在next_threads列表中的线程
            i.start()
    
        for i in next_threads:  # 直至启动的线程终止之前一直挂起;除非给出了 timeout(秒),否则会一直阻塞
            i.join()
    
    if __name__ == '__main__':
        main()
    
    

    相关文章

      网友评论

          本文标题:Python-threading使用

          本文链接:https://www.haomeiwen.com/subject/srnykdtx.html