Python:使用全局变量在线程内部打破循环时遇到问题

时间:2016-02-03 08:45:34

标签: python multithreading python-2.7 python-multithreading

所以我真的很新线程...我试图使用一个全局变量来打破一个线程内部的循环但由于某种原因线程似乎不明白我已经改变了全局变量。这是我的代码...非常感谢任何帮助。 :)

import threading

keepThreadRunning = True

def myThreadFunc():
    while keepThreadRunning:
        print keepThreadRunning
    return

myThread = threading.Thread(target = myThreadFunc())
myThread.start()
keepThreadRunning = False
myThread.join()

1 个答案:

答案 0 :(得分:3)

它永远不会停止的原因是代码永远不会到达未设置标志的位置。

myThread = threading.Thread(target = myThreadFunc())

您正在主线程中立即执行该功能。它将一直阻止,直到该函数退出,因为没有任何内容可以将keepThreadRunning设置为False,它永远不会退出。

相反,您应该传递对该函数的引用。

myThread = threading.Thread(target = myThreadFunc)

然后在新线程中正确执行。