Python线程的工作原理

Python线程的工作原理,第1张

概述代码如下所示: import timefrom threading import Threaddef sleeper(i): print "thread %d sleeps for 5 seconds" % i time.sleep(5) print "thread %d woke up" % ifor i in range(10): t = Thread(target= 代码如下所示:

import timefrom threading import Threaddef sleeper(i):  print "thread %d sleeps for 5 seconds" % i  time.sleep(5)  print "thread %d woke up" % ifor i in range(10):  t = Thread(target=sleeper,args=(i,))  t.start()

现在这段代码返回以下内容:

thread 0 sleeps for 5 secondsthread 1 sleeps for 5 secondsthread 2 sleeps for 5 secondsthread 3 sleeps for 5 secondsthread 4 sleeps for 5 secondsthread 5 sleeps for 5 secondsthread 6 sleeps for 5 secondsthread 7 sleeps for 5 secondsthread 8 sleeps for 5 secondsthread 9 sleeps for 5 secondsthread 1 woke upthread 0 woke upthread 3 woke upthread 2 woke upthread 5 woke upthread 9 woke upthread 8 woke upthread 7 woke upthread 6 woke upthread 4 woke up

如何线程1在线程0之前醒来同时线程0是第一个进入?

解决方法 最常见的Python-Interpreter(cpython)在一个Thread上运行,你创建的每个Thread都只是虚拟的,并且仍然在一个核心上执行 – 因为它是GIL( https://wiki.python.org/moin/GlobalInterpreterLock).执行它们的顺序不一定是启动thrads的顺序,这就是拥有线程的整个过程–cpython解释器将决定在任何给定时间执行哪个线程的哪一部分.由于您只能使用一个核心而线程只是虚拟的,因此您将无法在同一时间执行2个线程.

感谢Vality的纠正.

总结

以上是内存溢出为你收集整理的Python线程的工作原理全部内容,希望文章能够帮你解决Python线程的工作原理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存