300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python主线程有两个子线程 创建两个主函数_Python多任务之线程

python主线程有两个子线程 创建两个主函数_Python多任务之线程

时间:2019-01-23 03:36:55

相关推荐

python主线程有两个子线程 创建两个主函数_Python多任务之线程

1.1. 线程

threading.Thread(target = 函数名)

线程的运行是没有先后顺序的

主线程死了,子线程必死。子线程结束后,子线程会给子线程收尸。

当调用Thread的时候,不会创建线程;当调用Thread创建的实例对象的start()时,才会创建线程以及让这个线程开始运行

1.1.1. 概念

python中 import threading

线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程是独立调度和分派的基本单位。线程可以为操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。

· 子线程与子线程共享全局变量

· 更改全局变量,必须用global吗

在一个函数中,对全局变量进行修改时,到底是否需要使用global进行说明要看是否对全局变量得执行指向进行了修改。

如果修改了指向,既让全局变量指向一个新的地方。那么必须使用global。如果,仅仅是修改指向的空间中的数据,此时不用必须使用global

· 资源竞争

如果多线程

· 线程同步

同步就是协同步调,按预定的先后次序进行运行。

能够保证线程安全的访问竞争资源,最简单的同步机制就是引入互斥锁

· 互斥锁

当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制。

某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能修改;直到该线程释放资源,将资源的状态变成“非锁定”,其他线程才能再次锁定该资源,互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。

· 死锁

在线程间共享多个资源的时候,如果两个线程分别占有一部分的资源,就会造成死锁

1.1.2. 创建线程

· 指定函数为线程

t1 = threading.Thread ( target = 函数名)

t1.start()

· 指定类为线程

首先创建类的时候需要继承threading.Thread,在类里需要一个run()对象

因为继承,所以直接使用对象调用start(),而使用start()时会调用run()

class ss(threading.Thread):

def run():

pass

s1 = ss()

s1.start()

创建一个对象,只能创建一个线程,一个线程只能执行一个函数

· 传参数

t1 = threading,Thread(target = 函数名, args = (gl_list , ) )

传的是元组,当参数为一个的时候,不要忘记,

1.1.3. 常用函数

threading.enumerate()

mutex = threading.Lock()

mutex.acquire()

mutex.release()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。