多线程与网络编程-python学习

ernestwang 837 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(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('主线程结束')

标签: 网络编程 多线程 python

发布评论 0条评论)

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

复制成功
微信号: irenyuwang
关注微信公众号,站长免费提供流量增长方案。
我知道了