Python3x - 线程打印不需要的输出顺序

时间:2017-09-22 01:38:46

标签: python-3.x

我在Python 3x中玩过线程。以下是我的代码。

import threading

def hello_world2():
  threading.Timer(7.0, hello_world2).start()
  print("22222222!")

def hello_world():
  threading.Timer(5.0, hello_world).start()
  print("Hello, World!")

hello_world2()
hello_world()

然而,我对打印输出感到惊讶,因为我观察到输出有两种可能的情况 第一个是

Hello, World!
22222222!
Hello, World!
22222222!
Hello, World!
Hello, World!
22222222!

首先打印出Hello, World!,而在我的代码中,我首先专门写了打印22222222!

第二种情况是

22222222!
Hello, World!Hello, World!
22222222!
Hello, World!
22222222!
Hello, World!
Hello, World!
22222222!

虽然它首先打印22222222!,但在第二行打印第二个Hello, World!之前没有开始换行。

所以,我想知道这里发生了什么导致这种行为,并且我能够控制它以使其按照我打算的方式行事。

注意:我的问题主要不是关注打印,而是询问多线程程序的一般行为。如果我使用多个线程,我的程序会有一个狡猾或不受欢迎的执行顺序吗?即使我不打印出来(与运行单个线程相比),这种奇怪的行为是否存在

谢谢。

0 个答案:

没有答案