请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于python线程执行问题

老师好,您在这个小节说:对于Python而言,无论CPU有多少核,多少个进程,在同一个时刻,只能运行一个线程。

但在前一小节中,第18行开启线程之后,马上会执行第20行主线程的代码,最后打印lemon线程名字结束运行。

在这段debug中,我并没有感觉到同一时刻,只能运行一个线程。


相反,我倒觉得,第18行启动线程后,稍晚一点执行第20行主线程代码,之后同一时刻,同时运行两个线程代码。

主线程先结束,线程sleep一小端时间后,打印lemon结束整个代码。


所以老师,我的疑问是,无论CPU有多少核心,开了多少进程,是 同一时刻,只能启动一个线程?

//img1.sycdn.imooc.com//szimg/5ae96a800001587b23401346.jpg

正在回答

3回答

7七月 2018-05-02 20:01:01

只能一个线程执行代码。课程里也明确说了,cpu执行速度很快,你自己是感觉不出来线程的切换的。

0 回复 有任何疑惑可以回复我~
  • 提问者 lemonlxn #1
    老师好,我这几天重新编写代码,已经清晰明白了。
    
    import time
    from threading import Thread,current_thread
    
    a = 1
    
    def new_threading():
        global a
        time.sleep(1)
        a += 1
    
        t = current_thread()
        print('当前线程ID号: '+ str(id(t)))
        print('当前线程名称: ' + str(t.getName()))
        print('a 的值为:' + str(a))
        print('--------------')
    
    new_t1 = Thread(target=new_threading,name='new_threading1')
    new_t2 = Thread(target=new_threading,name='new_threading2')
    new_t1.start()
    new_t2.start()
    
    
    t = current_thread()
    print('当前主线程ID号: '+ str(id(t)))
    print('当前主线程名称: ' + str(t.getName()))
    print('a 的值为:'+ str(a))
    print('-------------')
    回复 有任何疑惑可以回复我~ 2018-05-03 17:05:04
  • 提问者 lemonlxn #2
    代码贴出来好乱,我已在下面截图
    回复 有任何疑惑可以回复我~ 2018-05-03 17:07:35
提问者 lemonlxn 2018-05-03 17:06:40

我还是截图好了,代码贴出来好乱https://img1.sycdn.imooc.com//szimg/5aead0f500019b6815641278.jpg

0 回复 有任何疑惑可以回复我~
  • 7七月 #1
    这些其实对于进阶开发很有意义,建议多看几遍慢慢思考,很有价值的内容。
    回复 有任何疑惑可以回复我~ 2018-05-04 04:23:25
  • 提问者 lemonlxn 回复 7七月 #2
    好的,谢谢老师。第六章已经看了6遍了,今天打算再看一遍,做一个总结。总结会贴在下面,老师您有空的话,麻烦看看我总结是否有误~谢谢老师
    回复 有任何疑惑可以回复我~ 2018-05-04 09:08:52
提问者 lemonlxn 2018-05-02 22:15:38

好的,谢谢老师

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号