对于python中的线程我还是有些疑问

来源:6-5 全局解释器锁GIL

a909802

2018-07-24

很认真的把这节课看了好几遍,最后自己写了一个小demo测试了一下,http://img.mukewang.com/szimg/5b568e8b000194f508360567.jpg

跑了很多遍,得到的结果都是

http://img.mukewang.com/szimg/5b568eae0001943204270555.jpg

,让我不禁产生了疑问,这个应该就是全局GIL起到的作用,但是和java的同步锁机制好像不太一样,这个怎么看都是执行完了一个线程中所有代码再执行另一个线程,还是说我的写法有问题- -

写回答

3回答

7七月

2018-07-24

我有点没看懂,你启用2到3个线程,别弄主线程 试试

0
3
a909802
回复
7七月
好的老师,谢谢您了
2018-07-24
共3条回复

天行有常哦

2022-12-15

def worker1():
    t = threading.current_thread()
    time.sleep(1)
    print(t.getName(), time.time())

for i in range(10):
    print('round {}'.format(i))
    t1 = threading.Thread(target=worker1, name='t1')
    t2 = threading.Thread(target=worker1, name='t2')
    t3 = threading.Thread(target=worker1, name='t3')

    t1.start()
    t2.start()
    t3.start()

建议试试这段代码,明显能看出t1,t2,t3并不是同步执行的。

0
0

慕标1049315

2020-05-12

原代码里肯定是先执行主线程。如果你想看到两个线程之间切换的效果,可以启动两个子线程,并且线程(函数)里加一个time.sleep().你就可以看到线程1运行到sleep的时候,程序切换到了线程2

0
0

Python Flask高级编程之从0到1开发《鱼书》精品项目

7月老师深入浅出剖析Flask核心机制,和你一起探讨Python高级编程

2735 学习 · 1267 问题

查看课程