python中线程知识点

来源:互联网 发布:信长野望长野业正数据 编辑:程序博客网 时间:2024/06/05 19:26
一 概念:


  1. 进程是系统进行资源分配的基本单位,进程之间相互独立。线程是进程划分出来可以单独调度运行的一个实例,是操作系统调度的基本单位,线程是比进程更小的能够独立运行的基本单位,线程是和同一个进程的其他线程共享进程所拥有的资源。
  2. 进程/线程区别:                                                      1.一个程序至少有一个进程,一个进程至少有一个线程。2.线程资源少于进程,使得多线程程序并发性高  3.进程在执行中拥有独立的内存单元,而多线程共享内存,极大的提供了程序运行 效率4.线程不能够独立执行,必须依存在进程中。
  3.  进程/线程优缺点: 线程和进程在使用上各有优缺点,线程执行开销小,但不利于资源的管理和保护,进程相反。
  4. 主线程结束,不会引起整个进程结束,也不会导致进程 中其它线程结束。


二多线程-threading


  1. threading.current_thread() #  获得当前线程对象---.name #当前线程对象名字。
  2. t = Thread(target=func) # 创建线程对象。t.start()启动进程
  3. t.name # 获得当前线程名字。
  4. t.join() #阻塞的等待线程结束---------主线程申请资源,分配任务,回收资源。主线程负责等待t线程结束。
  5. python中,主线程结束并不会造成其它子线程结束。主线程隐式的等待子线程结束。 #threading.enumrate() 枚举出当前存活线程。
  6. Thread继承类,定义__init__(self),和run(self), self.name是不变的,不是继承类的值。启动线程t.start()。
  7. 多个线程的运行顺序是不确定的。由操作系统的调度算法决定的。
  8. 多个线程共享全局变量。创建线程对象通过传参的方式传递全局变量,值不会变。。多线程竞争的访问全局变量的问题-----利用互斥锁解决。
  9. 锁的机制:将使用的公共资源需要获得锁,没有获得锁的线程,等待其它资源解锁。获得锁的对象可以操作资源。
  10. 互斥:对于公共资源一次一个的操作。
  11. mutex  = threading.Lock() #创建互斥锁----------是一个全局变量
  12. mutex.acquire()#申请锁    mutex.release()释放锁