线程

线程

  • 什么是线程:能被操作系统调度(给CPU执行)的最小单位

  • 同一个进程中的多个线程可以同时被CPU执行

  • 线程的优缺点:

    • 优点:资源共享,效率高,开启关闭切换时间开销小,可以被多个CPU调度,由操作系统负责调度
    • 缺点:数据不安全
  • 同一进程中的线程资源共享,可以利用多核,操作系统调度,数据不安全,开启关闭切换时间开销小

  • gc: 垃圾回收机制(线程):

    • 引用计数+分代回收
  • 代码:

    • from threading import Thread
      n=100
      def func():
          global n
          n-=1
      t_l=[]
      for i in range(100):
          t=Thread(target=func)
          t.start()
          t_l.append(t)
      
      for j in t_l:
          j.join()
      print(n)
      
      得:0  #线程中资源共享
      
    • enumerate 列表 存储了所有的活着的线程对象 一个11个(包括主线程)(注:如果在导入线程中的enumerate 还想使用内置函数的enumerate 的时候就给线程中的enumerate 起个别名)

      active_count 数字 计算活着的线程对象的总数

      内部使用current_thread().ident来获取线程ID

      from threading import Thread,current_thread
      import time
      class Mythread(Thread):
          def __init__(self,i):
              self.i=i
              super().__init__()
          def run(self):
              print(f'start{i}')
              print(current_thread().ident)  # 从内部使用current_thread.ident来获取线程ID
              time.sleep(1)
              print(f'end{i}')
      for i in range(10):
          mythread=Mythread(i)
          mythread.start()
      print(active_count(), enumerate())
      
posted @ 2021-07-02 00:34  刘家小仙女  阅读(52)  评论(0编辑  收藏  举报