循环线程按顺序进入无限循环

Loop threads in sequence into infinite loop

我在启动第一个线程时遇到问题,等到第一个线程结束,启动第二个线程,等到第二个线程完成,然后再次转到第一个线程并在无限循环中执行此操作。

我得到的结果没有正常工作,因为它没有时间延迟地打印线程...

这是我的代码:

import threading
import time

def Thread1():
    while True:
        print("THREAD 1")
        time.sleep(3)

def Thread2():
    while True:
        print("THREAD 2")
        time.sleep(6)

Thread1 = threading.Thread(target = Thread1)
Thread2 = threading.Thread(target = Thread2)


Thread1.start()

Thread2.start()
Thread2.join()

我想要的结果是:
线程 1
(停顿 3 秒)
线程 2
(6 秒停顿)
线程 1
(停顿 3 秒)
线程 2
(6 秒停顿)
...(无限循环)

你可以和来自 threading libraryEvent 打乒乓球:

import threading
import time

ping = threading.Event()
pong = threading.Event()

def thread1():
    while True:
        ping.wait()
        print("THREAD 1")
        time.sleep(3)
        ping.clear()
        pong.set()

def thread2():
    while True:
        pong.wait()
        print("THREAD 2")
        time.sleep(6)
        pong.clear()
        ping.set()

t1 = threading.Thread(target = thread1)
t2 = threading.Thread(target = thread2)

t1.start()
t2.start()
ping.set()
t2.join()

这将创建两个事件 pingpong。当 ping 被触发时,第一个线程被允许 运行。当它完成时,清除事件并触发 pong,允许第二个线程 运行,等等

不确定这是否是最好的方法,但它似乎有效。