【Python多线程编程之线程创建】
Python是一种轻量级的,可扩展的编程语言,具有非常高的可移植性和可读性。此外,它还提供了一个强大的线程模型,可用于开发多线程应用程序。
对于多线程编程,处理不同任务和业务流程的核心是线程创建。Python提供了一种非常简单易用的API,可用于创建线程。本文将讨论Python多线程编程中线程创建的具体实现。
1、Python线程创建基础
Python提供了几个模块来支持线程编程,threading和_thread。前者提供了更高级的功能,而后者提供了更底层的功能。这里使用前者来实现Python多线程编程中的线程创建。
要应用threading模块来实现Python多线程编程,首先需要创建一个Thread类的实例,这是线程创建的基础。Thread类是Python内置的类,其构造函数接受4个参数:
threadName:给新创建的线程设置一个名称,以便进行识别
target:指定新创建的线程执行的任务,这是一个定义了特定函数的可调用对象;
args:它是一个可以和target函数一起的可选参数,其作为元组传递给target函数;
kwargs:也是作为target函数的可选参数,以字典形式传递。
综上,可以用如下方式创建一个Thread实例:
t = Thread(threadName,target,args,kwargs)
2、Python线程创建实践
对上述 4 个参数做具体说明,并让我们一起来看一下Thread示例:
在这里,将函数作为可调用对象传递给Thread构造函数,然后在target函数内添加要在线程中完成的任务。下面这个例子会打印出1000次Hello:
import threading
def hello():
for i in range( 1000):
print('hello')
t = threading.Thread(name='hello', target=hello)
t.start()
同样的,如果想让线程去执行接受可变参数的函数,可以把这些参数作为args参数的元组传入构造函数就可以了,例如:
def hello(a,b):
for i in range(a,b):
print('hello')
t = threading.Thread(name='hello',target=hello,args=(1,1000))
t.start()
总而言之,Thread类的构造函数只需要提供target参数,即可调用函数,其他参数可以供开发者自由添加和定义,根据实际需要来进行调整。
3、 Python线程关闭
使用Python来开发多线程应用程序时,可以使用Thread类的join()成员函数来指定回收线程。join()是一个阻塞函数,也就是说如果当前线程调用了join,当前线程会停止运行,直到调用join的线程执行完毕,当前线程才会继续执行:
# 先定义一个函数
def hello():
for i in range(1000):
print('hello')
# 创建一个线程去执行该函数
t = threading.Thread(name='hello',target=hello)
t.start()
# 等待该线程执行完毕
t.join()
print('Thead is done')
综上所述,Python多线程编程的线程创建非常简单,仅需传递一个可调用的对象作为target参数,即可创建一个线程,而其他可选参数也可以根据实际需要去定制。
此外,使用Thread类的join()成员函数可以有效的实现线程的回收,从而防止程序内存溢出。再次强调,使用Python多线程编程可以更加有效的处理业务逻辑,扩展应用程序功能,建议开发者多进行实践,更加熟悉该技术。