Python3多线程知识点总结
线程和进程的区别
首先,了解线程和进程的区别是非常重要的,因为它们是多任务执行的基石。
- 进程是操作系统资源分配的基本单位,每个进程都有自己的独立内存空间和数据栈;
- 线程是进程的一部分,每个进程可以包含多个线程,它们共享相同的内存空间和数据栈。
Python中的多线程
Python中的多线程主要依赖threading
模块。以下是一些常用的线程函数和方法:
Thread(target=func, args=(), kwargs={})
:创建线程start()
:启动线程join(timeout=None)
:等待线程执行结束is_alive()
:判断线程是否在运行setDaemon()
:设置线程为守护线程(当主线程结束时自动退出)
示例1:线程创建与启动
import threading
def func():
print("This is a new thread.")
t = threading.Thread(target=func)
t.start()
print("Main thread is over.")
此例创建一个新的线程,调用print()
函数输出提示信息,然后输出主线程结束的提示。这里需要注意到,在输出主线程提示信息之前,先输出了新线程的提示信息。
示例2:创建多个线程与守护线程的设置
import threading
import time
def func(index):
print("This is thread %d." % index)
time.sleep(1)
print("Thread %d is over." % index)
threads = []
for i in range(10):
t = threading.Thread(target=func, args=(i,))
threads.append(t)
for t in threads:
t.setDaemon(True)
t.start()
print("Main thread is over.")
此例创建10个线程,每个线程调用print()
输出提示信息,然后暂停1秒钟后输出线程结束的提示信息。threads.append(t)
语句将每个线程添加到一个列表中,并通过循环语句启动每个线程。最后一行输出主线程结束的提示。
在这个例子中,这10个线程都是守护线程,它们会在主线程结束后被自动退出。我们可以通过t.setDaemon(False)
把线程设置为非守护线程,但是它们会一直运行直到自己结束,如果没有通过join()
等待它们结束,则主线程在结束时可能无法释放资源。
总结
本文介绍了Python中的多线程相关知识,包括线程和进程的区别、Python中多线程模块threading
的基本使用、线程的启动和退出、守护线程等。学会了这些知识,可以更好地利用多核CPU,提高程序的执行效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3多线程知识点总结 - Python技术站