【发布时间】:2018-11-07 20:55:39
【问题描述】:
我最近开始研究线程,我知道这是关于多个处理的东西我只是不明白为什么会发生这种情况
import threading
class BuckyMessenger(threading.Thread):
def __init__(self, name):
threading.Thread.__init__(self)
print("test")
def run(self):
for _ in range(4):
print(threading.current_thread().getName())
x = BuckyMessenger(name='Send')
y = BuckyMessenger(name='Receive')
z = BuckyMessenger(name='Nothing')
x.start()
y.start()
z.start()
我预计会发生这种情况:
test
Send
test
Receive
test
Nothing
从这里开始,我应该再打印 9 个打印件,分别是 3 个随机“发送”、3 个随机“接收”和 3 个随机“无”,如下所示:(其余结果)
Send
Receive
Nothing
Nothing
Nothing
Send
Receive
Receive
send
但这是我得到的结果: 我是说为什么?为什么python会这样?
test
test
test
Thread-1
Thread-1
Thread-1
Thread-1
Thread-2
Thread-2
Thread-2
Thread-2
Thread-3
Thread-3
Thread-3
Thread-3
【问题讨论】:
-
可能是因为初始化线程的时间与打印输出的时间一样长
标签: python multithreading constructor thread-safety python-multithreading