当前位置: > python教程 > python多线程 >

python并发编程2--threading
栏目分类:python多线程   发布日期:2019年03月09日 13:30:28   浏览次数:

        上一篇文章中粗略的介绍了python中多线程的简单实现和多线程的优缺点。首先我将复习上一篇的大致内容:1.python 的多线程适用于IO密集型任务,比如爬虫的请求任务可以使用多线程,服务器端处理请求任务可以使用多线程,GUI编程使用多线程。2.python的多线程是并发而不是并行的,这是因为GIL全局锁限制的。3.python的多线程简单实现可以用threading模块的Thread类实现。接下来我将讲解threading模块的详细内容。

                                                

1.threading模块介绍
threading模块是由_thread模块封装而来,模块内置了许多类和函数,比如Lock, RLock,Condition及Thread类等等。
接下来我将介绍Thread类的功能。

2.Thread类介绍
Thread类是创建线程的类,一个线程具有许多属性和方法。
线程对象可以传递函数至Thread初始化方法创建,伪代码如下:

def task(*args, **kwargs):
    pass
th = threading.Thread(target=task, args=(), kwargs={})
th.start()
tag
线程对象也可以继承Thread类,并重载run方法实现。伪代码如下:

class mythread(threading.Thread):
    def __init__(self,*args, **kwargs):
        super().__init__()

    def run(self):
        '''do your things'''
        
th = mythread(*args, **kwargs)
th.start()
tag
不管哪种方式创建的线程对象,都需要通过start方法启动。线程对象的start方法调用的其实是线程的run方法,这才是真正执行的操作

2.threading模块提供的函数
threading模块具有许多功能函数,可以查看当前应用程序的线程信息和状态。

threading.enumerate():返回当前所有存在的线程对象的列表
threading.active_count():返回当前所有存在的线程的数量,调用len(enumerate)得到
threading.activeCount():active_count函数的别名,作用同上
threading.current_thread():返回当前的正在运行的线程对象
threading.currentThread():current_thread函数的别名,作用同上
threading.main_thread():返回主线程对象
threading.get_ident():返回当前正在运行的线程对象的标识符

总结

        可以看到线程对象的创建的两种方法,以及threading模块的提供的函数。threading模块可以方便的查看获取当前的线程对象的状态和信息,当熟悉的掌握这些方法后,我们才能对线程对象有更深入的研究和认识

相关热词:

热门关键词
python字符串
     
python教程 python爬虫 python人工智能 Python+大数据 python问答