Python threading库

threading是python中的一个标准库。

import threading  #导入threading库

一、threading库中的一些方法:

threading.active_count()  # 返回正在运行线程的数量,相当于len(threading.enumerate())
threading.enumerate()  # 返回一个正在运行线程的列表
threading.current_thread()  #返回当前线程变量

二、threading中的Thread类

threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None)

其中最重要的参数是target,将一个回调函数赋值给它。下边会有演示。
name给线程起名字。
args用来传递参数。

三、创建线程

def thread_job():
    print("This is a thread of %s" % threading.current_thread())


thread = threading.Thread(target=thread_job)  

注意:赋值给target的回调函数是不带括号的,不能这样thread = threading.Thread(target=thread_job())
否则会出现问题。不能带括号的原因
也可以自定义类继承Thread类。

四、启动线程

threate.start()

创建线程后,本身不会自己启动,需要使用start()函数。

五、join方法:阻塞主线程

thread.join()

使用join方法后,会阻塞该子线程所在的主线程会被阻塞,主线程会等待该子线程执行结束后再继续执行。

六、Queue队列:返回结果

多线程是没有返回值的,需要把结果放在队列中。
可以使用python的标准库queue

from queue import Queue  # 导入queue库中的Queue类

七、Lock

使用threading库中的Lock类,每次只允许一线程的数据操作。

def thread_job():
	#lock不需要global声明全局变量,因为不修改这个变量
    lock.acquire()
    print("This is a thread of %s" % threading.current_thread())
    lock.release()


lock = threading.Lock()
Thread = threading.Thread(target=thread_job())
Thread.start()
Thread.join()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值