关于自定义的class继承threading.Thread的问题

关于自定义的class继承threading.Thread的问题


问题描述:

你好,关于此类问题我也看过类似的回答,但是还是不理解

例如PageSpider这个Class 来继承threading.Thread的用意是为了让之后main()调用线程的时后,可以让不同的线程去多次执行PageSpider是吗?

至于有提到PageSpider的run()是复写掉threading.Thread,然后才用start()去调用它,能否解释一下,具体是怎么做到的?

如果按照一般的思路,PageSpider不继承线程,直接用for循环,将每个url传入并且执行多线程,是否也可以呢?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!

1、是的,实现了多线程。继承threading.Thread类是实现线程的一种方式,可以使线程按照我们自己的逻辑进行处理

2、继承threading.Thread来定义线程类的本质是重写Thread类中的run方法,该方法中的代码就是线程要执行的方法,使用start()方法启动线程时会自动调用run方法执行线程。

3、使用threading.Thread()创建多个线程,执行PageSpider中的代码也是可以的。

祝学习愉快!

  • 慕的地2111885 提问者 #1

    你好,

    1. 也就是说继承了线程之后,就需要在该class里面定义一个run(),才能让线程调用吗?


    2.

    thread_name page_spider_threadname_list:
        thread = PageSpider(thread_namepage_queuedetail_queue)
        thread.start()
        page_spider_list.append(thread)

    queue里面的数据是可以在多个线程中共用,是限定在一个进程底下的线程之间对吗?

    2022-06-29 18:40:59
  • 慕的地2111885 提问者 #2

    你好
    1.  承第2点,也是说我们自定义的class去继承线程后,在我们定义的class里面,也必须要有run()方法吗?


    2. 请问queue是不是只有在一个进程底下的线程之间才能共用?

    thread_name page_spider_threadname_list:
        thread = PageSpider(thread_namepage_queuedetail_queue)
        thread.start()
        page_spider_list.append(thread)


    2022-06-29 18:44:54
  • 好帮手慕美 回复 提问者 慕的地2111885 #3

    同学,你好!

    1、是的,必须要有run()方法

    2、多线程之线程之间共享数据就是用Queue。

    我们运行py文件时,该程序的运行就是一个进程,如果在该进程中又创建了其他进程或线程,那么该进程就是主进程。

    祝学习愉快!

    2022-06-30 09:50:41
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师