Python3 多线程
python3 多线程
python 支持多线程编程。线程(thread)是操作系统能够进行运算调度的最小单位。它包含在进程之中,是进程中的实际调度单位。
一个进程中可以并发多个线程,每条线程并行执行不同的任务。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
线程分类
- 内核线程:由操作系统内核创建和撤销。
- 用户线程:不需要内核支持而在用户程序中实现的线程。
python3 线程中常用的两个模块
- _thread
- threading(推荐使用)
thread 模块已被废弃。用户可以使用 threading 模块代替。所以,在 python3 中不能再使用"thread" 模块。为了兼容性,python3 将 thread 重命名为 "_thread"。
开始学习python线程
python中使用线程有两种方式:函数或者用类来包装线程对象。
函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程。语法如下:
_thread.start_new_thread ( function, args[, kwargs] )
参数说明:
- function - 线程函数。
- args - 传递给线程函数的参数,他必须是个tuple类型。
- kwargs - 可选参数。
范例
#!/usr/bin/python3
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", 2, ) )
_thread.start_new_thread( print_time, ("thread-2", 4, ) )
except:
print ("error: 无法启动线程")
while 1:
pass
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", 2, ) )
_thread.start_new_thread( print_time, ("thread-2", 4, ) )
except:
print ("error: 无法启动线程")
while 1:
pass