Python线程模块threading

对线程的简单理解

线程(thread)是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。
单线程:所有任务都得按照顺序执行;
多线程:一个主线程,多个线程同时运行完成任务,多线程之间可以资源共享;
线程同步:如果资源有限,就会产生冲突。解决冲突可以排队等待、或通信;
互斥锁:共享的资源有1个,多线程竞争时一般互斥锁同步;
递归锁:又称可重入锁。已经获得递归锁的线程可以继续多次获得该锁,而不会被阻塞,释放的次数必须和获取的次数相同才会真正释放该锁。
信号量(semaphore):共享的资源有多个,多线程竞争时一般使用信号量(Semaphore)同步;
线程守护属性设置:主线程永远是最后退出的,如果主线程已经完成,多线程是否立即结束;
进程:进程之间不能共享资源,但可以通过管道传递信息,也可以共享内存。

线程创建并使用

使用threading模块的Thread类创建线程。

import threading	#导入模块

def fuc(a,b,c):
	pass
	
thread1 = threading.Thread(target=fuc, (a, b, c))	#实例化创建线程1
thread2 = threading.Thread(target=函数名, 函数参数)	#实例化创建线程2

thread1.start()	#开启新线程1
thread2.start()	#开启新线程2

threads = []
threads.append(thread1)
threads.append(thread2)
for t in threads:	
	t.join()	#等待所有线程完成
	
print("主线程退出!")	#退出

注:
函数参数传递有多种方式:
元组传递 args=(参数1,参数2,…)
字典传递 kwargs={“参数名”: 参数1, “参数名”: 参数2, …}
以及混合传参 args=(参数1, 参数2, …), kwargs={“参数名”: 参数1,“参数名”: 参数2, …}

自定义线程类创建线程,继承threading.Thread类。

import threading
import time

class myThread (threading.Thread):
    def __init__(self, threadID, name, counter):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.counter = counter
    def run(self):
        print ("开始线程:" + self.name)
        fuc(a, b, c)
        print ("退出线程:" + self.name)

def fuc(a, b, c):
	pass

# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)

# 开启新线程
thread1.start()
thread2.start()
#等待线程完成
thread1.join()
thread2.join()

print ("退出主线程")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值