首页 / PYTHON / Python线程的工作原理
Python线程的工作原理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python线程的工作原理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1158字,纯文字阅读大概需要2分钟。
内容图文
代码如下所示:
import time
from threading import Thread
def sleeper(i):
print "thread %d sleeps for 5 seconds" % i
time.sleep(5)
print "thread %d woke up" % i
for i in range(10):
t = Thread(target=sleeper, args=(i,))
t.start()
现在这段代码返回以下内容:
thread 0 sleeps for 5 seconds
thread 1 sleeps for 5 seconds
thread 2 sleeps for 5 seconds
thread 3 sleeps for 5 seconds
thread 4 sleeps for 5 seconds
thread 5 sleeps for 5 seconds
thread 6 sleeps for 5 seconds
thread 7 sleeps for 5 seconds
thread 8 sleeps for 5 seconds
thread 9 sleeps for 5 seconds
thread 1 woke up
thread 0 woke up
thread 3 woke up
thread 2 woke up
thread 5 woke up
thread 9 woke up
thread 8 woke up
thread 7 woke up
thread 6 woke up
thread 4 woke up
如何线程1在线程0之前醒来同时线程0是第一个进入?
解决方法:
最常见的Python-Interpreter(CPython)在一个Thread上运行,你创建的每个Thread都只是虚拟的,并且仍然在一个核心上执行 – 因为它是GIL(https://wiki.python.org/moin/GlobalInterpreterLock).执行它们的顺序不一定是启动thrads的顺序,这就是拥有线程的整个过程–CPython解释器将决定在任何给定时间执行哪个线程的哪一部分.由于您只能使用一个核心而线程只是虚拟的,因此您将无法在同一时间执行2个线程.
感谢Vality的纠正.
内容总结
以上是互联网集市为您收集整理的Python线程的工作原理全部内容,希望文章能够帮你解决Python线程的工作原理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。