gpt4 book ai didi

python - 线程似乎按顺序运行线程

转载 作者:太空狗 更新时间:2023-10-29 17:37:58 26 4
gpt4 key购买 nike

我正在尝试在我正在处理的 Python 项目中使用线程,但线程的行为似乎与我的代码中预期的不一样。似乎所有线程都按顺序运行(即线程 2 在线程 1 结束后启动,它们不会同时启动)。我写了一个简单的脚本来测试这个,它也按顺序运行线程。

import threading

def something():
for i in xrange(10):
print "Hello"

def my_thing():
for i in xrange(10):
print "world"

threading.Thread(target=something).start()
threading.Thread(target=my_thing).start()

这是我运行它得到的输出:

Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
Hello
world
world
world
world
world
world
world
world
world
world

在循环迭代次数多得多的情况下观察到相同的行为。

我尝试搜索网络和较早的 SO 答案,但找不到任何有用的信息。有人可以指出这段代码有什么问题吗?

最佳答案

目前在 python 中,线程在执行一些指定数量的字节码指令后会发生变化。它们不会同时运行。只有当其中一个线程调用一些 I/O 密集型或不影响 python 的模块时,您才会有线程并行执行,这些模块可以释放 GIL(全局解释器锁)。

我敢肯定,如果您将循环次数增加到 10000 之类的值,您的输出就会混淆。请记住,仅仅生成第二个线程也需要“很多”时间。

关于python - 线程似乎按顺序运行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1697571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com