Python线程之多线程展示详解
在Python中,可以使用多个线程来实现并行的任务执行,提高程序的运行效率。本篇文章将详细讲解Python多线程的使用以及实现过程。
多线程基本概念
- 线程:是程序执行流的最小单位,被包含在进程中,一个进程可以包括多个线程。
- 多线程:指同一时刻运行多个线程,即同一个进程中同时执行多个线程。
- 共享资源:多个线程共同使用的资源,如变量、内存等。
Python多线程模块——_thread
Python中的_thread模块提供了基本的线程支持。
模块方法
- start_new_thread(function, args[, kwargs]):开启一个新的线程。
- acquire([waitflag]):申请锁,等待其他线程释放锁。
- release():释放锁。
示例1——创建并运行一个线程
以下是基本的创建线程的代码示例:
import _thread
import time
# 定义函数,该函数将作为新线程运行
def print_time(threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print("%s: %s" % (threadName, time.ctime(time.time())))
# 创建新线程
try:
_thread.start_new_thread(print_time, ("Thread-1", 1,))
_thread.start_new_thread(print_time, ("Thread-2", 2,))
except:
print("Error: Unable to start thread.")
# 循环等待所有线程完成
while 1:
pass
上述代码首先定义了一个名为print_time的函数作为新线程运行的函数。该函数将每隔一定的时间打印出线程名称以及当前时间。接着使用start_new_thread()方法创建了两个新的线程,然后循环等待所有线程运行完成。执行该脚本后,会创建两个新线程及对应的函数打印出的信息。
Python多线程模块——threading
Python同时还提供了一个更加高级的多线程模块——threading模块,它对_thread模块进行了封装,提供了更加方便易用的接口。
模块方法
- Thread():创建新线程。
- start():启动线程。
- join([time]):线程加入,等待线程运行完成。
- run():线程被开启后执行的方法。
- setDaemon(boolean):将线程设为守护线程。
示例2——线程池
以下是一个线程池的示例:
import threading
import time
# 定义线程工作任务
def worker(num):
print('Thread %s is running' % threading.currentThread().getName())
time.sleep(1)
print('Thread %s ended' % threading.currentThread().getName())
# 创建线程池
thread_pool = []
for i in range(5):
t = threading.Thread(target=worker, args=(i,))
thread_pool.append(t)
# 启动线程池
for t in thread_pool:
t.start()
# 等待所有线程任务完成
for t in thread_pool:
t.join()
print('All done')
上述代码首先定义了一个名为worker的函数,该函数模拟线程工作任务。接着,创建一个由5个线程组成的线程池,并启动这些线程。最后,等待所有的线程任务完成后输出一行信息。执行该脚本后,会按照线程创建的顺序输出每个线程的“开始”、“结束”信息,最后输出“All done”信息。
以上便是Python线程之多线程展示详解的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python线程之多线程展示详解 - Python技术站