线程无限循环和同步问题

问题描述 投票:0回答:1

我很头疼,试图弄清楚如何用Python处理2个线程。

我的想法是为闪烁的LED创建一个线程,该线程具有无限的while循环,并且当全局变量更改为True时,它开始闪烁等,但始终处于无限循环中。

其他主线程,将等待信号闪烁,但是如果信号正在闪烁,它将重置全局闪烁计时器,因此它必须在单独的线程中。

我遇到的问题是,当我从主线程启动LED线程时,由于LED线程具有无限循环,因此它会使主线程停止运行,而不是flashThread.start()

if __name__ == "__main__":
    print('starting main...')
    flashThread = threading.Thread(name='SFlashing', daemon = True, target=Flash)
    flashThread.start()
    while(True):
        print('running main...')
        time.sleep(2)

它永远不会到达running main...

Flash()只是无限的while循环,它确实填充了全局变量...

python multithreading loops infinite
1个回答
0
投票

这是根据您的解释,主线程打印running main... +并行线程递增变量count的示例。您的代码应该可以工作,也许您可​​以向我们提供有关Flash循环的更多信息,以便我们可以为您提供帮助?

import threading
import time

def Flash():
    count = 0
    while True:
        print("count", count)
        count += 1
        time.sleep(1)

print('starting main...')
flashThread = threading.Thread(name='SFlashing', daemon = True, target=Flash)
flashThread.start()
while(True):
    print('running main...')
    time.sleep(2)

输出:

starting main...
count 0
running main...
count 1
running main...
count 2
count 3
running main...
© www.soinside.com 2019 - 2024. All rights reserved.