线程模块
线程模块:
使用Threading模块创建线程
了解线程:
- 使用线程可以把占据时间的程序中的任务放到后台去处理。
- 用户界面可以更加的吸引人,这样吧入用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的速度。
- 程序的运行速度可能加快。
- 在一些等待的任务实现上如用户输入,文件读写好人网络收发数据等,线程就比较好用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。
- 线程在执行过程中与进程还是有区别的。每一个独立的线程有一个程序运行的入口,顺序执行序列和程序的出口。但是线程不能独立执行,必须依存在的应用程序中,由应用程序提供多个线程执行控制。
- 每个线程都有自己的一组CPU寄存器,称之为线程的上下文,该上下文反映了线程上次运行该线程的CPU寄存器的状态。
- 指令指针和堆栈指针寄存器是线程上下文中两个最重要的寄存器,线程总是在进程得到上下文中运行的,这些地址都用于标志拥有线程的进程地址空间中的内存。
- 在其他线程正在运行时,线程可以暂时搁置也称为睡眠---这就是线程的退让。
- Python中使用线程有两种方式:函数或者用类来包装线程对象
- 函数式:调用thread模块中的start new_thread()函数用来产生新线程
-
- thread.start new_thread(function,args[,kwargs])参数说明
- function -线程函数。
- args-传递给线程函数的参数,他必须是个tuple类型。
- kwargs-可选参数。
- 实例:
-
#!/usr/bin/python
# -*- coding: UTF-8 -*-
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: unable to start thread"
while 1:
pass