Python多线程--(1)之基本概念

来源:互联网 发布:马氏链模型matlab编程 编辑:程序博客网 时间:2024/06/07 00:13

多线程


线程与进程


进程(重量级进程):一个执行中的程序。拥有自己的地址空间、内存、数据栈以及用于跟踪执行的辅助数据。进程可以派生新的进程来执行其他任务,进程之间只能采用进程间通信(IPC)的方式共享信息。

线程(轻量级进程):在同一进程下进行,可以共享相同的上下文。线程一般是并行方式执行的。主线程+各个线程。


threading模块

Thread:一个线程的对象,含有:name,ident,daemon,init()、start()、run()、join()、getName()、setName()。可以选择将Thread直接实例化传入target函数和args参数。或者将threading.Thread子类化,然后使用子类。

Lock:锁原语
支持守护线程,也就是,守护线程是不需要主线程等待它结束的。在treading中用thread.daemon=True就会将线程标记为守护线程。子线程会继承父线程的守护标记


同步原语
一般在多线程代码中,会有一些特定的函数或代码块不希望被多个线程同时进行,(通常包括修改数据库、更新文件或其他会产生竞态条件的情况)此时就需要同步。

:两种状态分别是锁定和未锁定,支持两种函数,获得锁和释放锁。当多线程竞争锁时,先得到锁的线程进入临界区执行代码,其余线程被阻塞等待锁释放后再次竞争。获得锁是随机的,会根据Python的实现的不同有所区别。

信号量:它是一个计数器。当资源消耗是递减,资源释放是递增。代表资源是否可用。当一个线程对一个资源完成操作时,该资源会返回资源池中。acquire和release。信号量比锁更加灵活,因为可以有多个线程,每个线程拥有有限资源的一个实例。

原创粉丝点击