python :线程简介和threading模块的使用

ernestwang 1 0

线程简介

  • 线程可以认为是轻量级的进程
  • 一个进程至少包含一个线程(主线程)
  • 线程是CPU分配时间(任务调度)的基本单位,调度是操作系统的事
  • 进程之间的数据是独立的,线程之前的数据是共享
  • 一个进程实现多任务,创建多个线程就可以了
  • 线程模块
    • _thread:低级模块,使用不够方便和灵活,很少使用
    • threading:高级模块,是对_thread模块的封装,推荐使用

_thread

  • 示例:
    import _thread
    import time
    
    def loop(num):
        print('子线程开始')
        print('子线程任务:', num)
        print('子线程结束') 
        
    if __name__ == '__main__':  
        print('主线程开始')
        # 启动一个子线程
        _thread.start_new_thread(loop, (250,))
        time.sleep(2)
        print('主线程结束')

threading

  • 基本使用
    import threading
    import time
    
    def run(file):
        print(file, '开始下载')
        ct = threading.current_thread()
        print(ct.name)
        for i in range(1, 6):
            time.sleep(1)
            print('已下载{}%...'.format(i * 20))
        print(file, '下载完成')   
        
    if __name__ == '__main__':
        print('主线程开始')
        # 获取主线程
        mt = threading.main_thread()
        print('主线程:', mt.name)
    
        # 获取当前线程
        ct = threading.current_thread()
        print('当前线程:', ct.name)
    
        # 创建子线程
        thr = threading.Thread(target=run, args=('meinv.jpg',), name='图片下载')
    
        # 查看活跃线程数量
        print('活跃线程数量:', threading.active_count())
        # 查看线程活跃状态
        print('线程是否启动:', thr.is_alive())
        # 启动线程
        thr.start()
    
        print('活跃线程数量:', threading.active_count())
        print('线程是否启动:', thr.is_alive())
    
        # 查看线程信息
        print('线程信息:', threading.enumerate())
    
        # 等待子线程结束
        thr.join()
    
        print('主线程结束')

发表评论 (已有0条评论)

还木有评论哦,快来抢沙发吧~