1 模块简介

threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版。threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作。

不过请注意,Python中的线程最好是与IO操作一起工作,比如从网络上下载资源或者从你的电脑中读取文件和目录。如果你需要处理一些CPU密集的任务,你最好是看看Python的multiprocessing模块。原因就是Python有GIL锁(解释器全局锁),使得所有的线程在主线程内运行。由于这个原因,当你使用线程执行CPU密集型任务时,你可能会发现它会运行的很慢。下面,我们主要集中在IO操作--线程做的好的场景。

2 模块使用

2.1 线程入门

一个线程允许你像运行一个独立的程序一样,运行一段独立的代码,类似于subprocess,区别在于,线程运行的是函数或者类,而不是一个独立的程序。我发现使用一个具体的实例会有助于我们更加理解概念。实例如下,

import threading def doubler(number): print(threading.currentThread().getName() + "\n")
    print(number * 2) print"" if __name__ == "__main__": for i in range(5):
        my_thread = threading.Thread(target = doubler,args = (i,))
        my_thread.start()
         my_thread.join()

我们首先引入threading模块,创建一个常规的函数doubler。这个函数将输入值乘以2,它也打印出调用这个函数的线程的名字,最后打印一个空白行。你也许会注意到当我们实例化一个线程时,我们设置它的target为我们的doubler函数,然后我们将变量传递给这个函数。使用args参数看起来有些奇怪,是因为我们需要向doubler函数传递一个序列,但是它只介绍一个变量,我们我们需要在末尾放入一个逗号,从而构造出一个序列。

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式