【发布时间】:2021-12-27 01:49:02
【问题描述】:
我试图学习 python 的线程,我发现了这些结果。我想知道 python 的 print() 是如何实际输出到控制台的。
import threading
import time
def testing(name):
print(name)
y = threading.Thread(target=testing, args=("y",))
y.start()
x = threading.Thread(target=testing, args=("x",))
x.start()
输出
yx
import threading
import time
def testing(name):
print(name)
y = threading.Thread(target=testing, args=("y",))
y.start()
time.sleep(.001)
x = threading.Thread(target=testing, args=("x",))
x.start()
输出
y
x
真的我的问题是为什么不是第一个的输出:
y
x
【问题讨论】:
-
您在这里真正要问的不是“行距”(又名“换行符”)。您是在问
print(...)在从更多并发调用时应该如何表现不止一个线程。我不知道答案,但如果事实证明存在 no 规则,请不要感到惊讶。线程是 Python 的一个相对较新的补充(无论如何都比print新)完全有可能没有人开始编写规范来说明从多个线程调用时print(...)的行为方式。 -
好的,更新了问题。似乎打印在某种程度上是基于时间的,这很有趣。
-
据我了解,您正在对同一个 PyObject 使用多个入口点(同时),如果门(入口点)关闭,您只会得到一个输出。所以你需要一点时间来执行你的代码。
标签: python python-3.x multithreading