线程(Threads),又称为“轻量级进程”(lightweight processes),多个线程并行的运行在同一个进程中。线程常用于非阻断的输入调用、运行时间很长的任务等。相比进程,线程具备性能好、简单、共享进程全局内存、兼容性好等优点。但是线程不是一种启动另一个程序的方法,另外由于共享进程的全局内存,多个线程之间存在同步化的问题。
_thread模块(在Python 2.X中称为thread)中函数start_new_thread(function, args[, kwargs])生成一个新的线程并返回该线程ID,并指定该线程执行相应的函数。当函数返回(返回值被忽略)或函数抛出异常时,线程退出。为了保证线程间的同步化,_thread模块提供了锁(lock)的机制,线程在访问共享资源之前必须获取(acquire)一个锁,在对共享资源完成操作之后,释放(release)该锁,这样其他的线程才能访问共享资源。_thread模块相关的函数是allocate_lock(...)生成一个lock对象, 通过aquire(...)/release(...)方法获取/释放锁。
如果说_thread模块是一个底层的接口的话,那么threading模块就是一个上层的接口。threading提供了一个Thread类,该类中提供了诸如__init__(self, group=None, target=None, name=None, args=(), kwargs=None, verbose=None),join(self, timeout=None), start(self)等方法。
Python中queue模块(在Python 2.X中称为Queue)拥有普通list的属性,同时还具备放在queue里的对象受到线程锁获取/释放操作的控制。这样只有一个线程可以修改queue。关于queue模块的详细定义可以参考Python的文档http://docs.python.org/library/queue.html