会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
Python 全系列/第三阶段:Python 网络与并发编程/网络通信 76楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 77楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 78楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 80楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 82楼

from threading import Thread
import time

class MyThread(Thread):

    def __init__(self, name) -> None:
        Thread.__init__(self)
        self.name = name
   
    def run(self):
        print(f"线程{self.name} start")

        print(time.time())
        for i in range(100):
            print(f"线程{self.name}:",i)
        time.sleep(3)
        print(time.time())

        print(f"线程{self.name} end ")

if __name__ == "__main__":
    print("主线程 start")

    # 创建线程
    t1 = MyThread("t1")
    t2 = MyThread("t2")
    # 守护线程 daemon
    t1.daemon = True
    t2.daemon = True
    # 启动线程
    t1.start()
    t2.start()
    # join()方法 等待子线程结束后再结束主线程
    # t1.join()
    # t2.join()

    print("主线程 end")

image.png

老师,这个代码我有几个问题:

1、主线程执行完毕和主线程结束不是一回事儿的话,主线程怎么样才算结束,是执行完毕后会有一个缓冲时间,去告诉系统,我执行完毕了,可以结束了吗?

2、这里执行结束后有这个报错,是我的代码问题吗,我和课上代码对比了没有发现代码哪里有问题呀;

3、这段代码里,我用time.time()方法试了一下,sleep函数貌似失效了,没有等待时间,是直接输出的,但是我不写在线程里,单独写一个测试sleep的代码的话是能正常使用的,这是什么原因。

Python 全系列/第三阶段:Python 网络与并发编程/并发编程 83楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 84楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 85楼
Python 全系列/第三阶段:Python 网络与并发编程/网络通信 86楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 87楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 88楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 89楼
Python 全系列/第三阶段:Python 网络与并发编程/并发编程 90楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637