并发编程--线程开启线程守护线程线程互斥锁

Posted zhangbingsheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发编程--线程开启线程守护线程线程互斥锁相关的知识,希望对你有一定的参考价值。

一、什么是线程

进程其实一个资源单位,而进程内的线程才是cpu上的执行单位,线程其实指的就是代码的执行过程

二、进程和线程的区别

1. 同一进程下的多个线程共享该进程内的资源
2. 创建线程的开销要远远小于进程

三、利用Thread类开启线程的两种方式

1、Thread类

Thread实例对象的方法
  # isAlive(): 返回线程是否活动的。
  # getName(): 返回线程名。
  # setName(): 设置线程名。

threading模块提供的一些方法:
  # threading.currentThread(): 返回当前的线程变量。
  # threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
  # threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

2、开启线程

技术图片
from multiprocessing import Thread
import time

def task(name):
    print(%s is running  % name)
    time.sleep(2)
    print(%s is done  % name)


if __name__ == __main__:
    t = Thread(target=task, args=(线程1,))
    t.start()
    print()
方式一
技术图片
class Mythread(Thread):
    def run(self):
        print(%s is running  % self.name, current_thread().name)
        time.sleep(2)
        print(%s is done  % self.name, current_thread().name)


if __name__ == __main__:
    t = Mythread()
    t.start()
    print(, active_count(), current_thread().name)
方式二

四、统一进程下线程间资源共享

同一进程下的多个线程共享该进程内的资源

技术图片
from threading import Thread
n = 100


def task():
    global n
    n = 0


if __name__ == __main__:
    t = Thread(target=task)
    t.start()
    t.join()
    print(n)

# 0
统一进程下的线程间资源共享

五、守护线程

无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁

★★运行完毕并非终止运行

 

以上是关于并发编程--线程开启线程守护线程线程互斥锁的主要内容,如果未能解决你的问题,请参考以下文章

python并发编程之多线程守护系列互斥锁生产者消费者模型

并发编程目录

Python并发编程04/多线程

并发编程8 线程的创建&验证线程之间数据共享&守护线程&线程进程效率对比&锁(死锁/递归锁)

高并发基石多线程守护线程线程安全线程同步互斥锁

Python 开启线程的2中方式,线程VS进程(守护线程互斥锁)