第五章 爬虫进阶(二) 2020-01-19

二、 使用Thread类创建多线程


继承自threading.Thread类

两个小知识

1、使用threading.current_thread()可以看到当前线程的信息。

2、使用threading.enumerate()函数可以看到当前的线程。

为了让线程代码更好的封装。可以使用threading模块下的Thread类,继承自这个类,然后实现run方法。线程就会自动运行方法中的代码。示例代码如下:


import time

import threading

 

 

class CodingThread(threading.Thread):

    def run(self):

    for x in range(3):

        print("%d正在写代码..." % threading.current_thread())

        time.sleep(1)

 

 

class DrawingThread(threading.Thread):

    def run(self):

    for x in range(3):

        print("%d正在画图..." % threading.current_thread())

        time.sleep(1)

 

 

def multi_thread():

    t1 = CodingThread()

    t2 =DrawingThread()

 

    t1.start()

    t2.start()

 

 

if__name__ == '__main__':

    multi_thread()


查看当前线程:

1、threading.current_thread:在线程中执行这个函数,会返回当前线程的对象。

2、threading.enumerate:获取整个程序中所有的线程。


继承自threading.Thread类:

1、我们自己写的类必须继承自threading,Thread类。

2、线程代码需要放在run方法中执行。

3、以后创建线程的时候,直接使用我们自己创建的类来创建线程就可以了。

4、为什么要使用累的方法创建线程呢?原因是因为类可以更加方便的管理我们的代码,可以让我们使用面向对象的方式进行编程。


示例代码:


import time

import threading

 

 

# def coding():

#     the_thread = threading.current_thread()

#     # print(the_thread)

#     # print(the_thread.name)

#     for x in range(3):

#         print("%s正在写代码..." % the_thread.name)

#         time.sleep(1)

#

#

# def drawing():

#     the_thread = threading.current_thread()

#     # print(the_thread.name)

#     for x in range(3):

#         print("%s正在画图..." % the_thread.name)

#         time.sleep(1)

#

#

# def single_thread():

#     coding()

#     drawing()

#

#

# def multi_thread():

#     th1 = threading.Thread(target=coding,name='小明')

#     th2 = threading.Thread(target=drawing,name='小红')

#

#     th1.start()

#     th2.start()

#

#     print(threading.enumerate())

#

#

#  if__name__ == '__main__':

#     multi_thread()

 

 

#=========================================================

 

class CodingThread(threading.Thread):

    def run(self):

        the_thread = threading.current_thread()

        for x in range(3):

            print("%s正在写代码..." % the_thread.name)

            time.sleep(1)

 

 

class DrawingThread(threading.Thread):

    def run(self):

        the_thread = threading.current_thread()

        for x in range(3):

            print("%s正在画图..." % the_thread.name)

            time.sleep(1)

 

 

def multi_thread():

    th1 = CodingThread()

    th2 = DrawingThread()

 

    th1.start()

    th2.start()

 

 

if__name__ == '__main__':

    multi_thread()



上一篇文章 第五章 爬虫进阶(一) 2020-01-18 地址:

https://www.jianshu.com/p/c83c7a55c3e7

下一篇文章 第五章 爬虫进阶(三) 2020-01-20 地址:

https://www.jianshu.com/p/5304979f7c7f



以上资料内容来源网络,仅供学习交流,侵删请私信我,谢谢。

你可能感兴趣的:(第五章 爬虫进阶(二) 2020-01-19)