Python - 简单的线程不会停止

时间:2017-09-26 21:22:36

标签: python multithreading

我遇到使用线程的python脚本问题。我可以用以下代码模仿这个问题:

from threading import Thread

def func1():
    while True:
        print 'Function 1'

def main():
    t = Thread(target = func1)

    t.start()

    for i in xrange(100000):
        print 'Main'

    t.stop()

    print 'End'

if __name__ == '__main__':
    main()

问题是当我用 Ctrl + C 中断脚本时或者当它到达终点时,运行func1()的线程不会停止

如果打开终端并killall python,我只能中断执行。

这是我第一次使用Python中的线程。我究竟做错了什么?

1 个答案:

答案 0 :(得分:1)

我的方法(也许不是最好的,但它有效)是:

  1. 有一个线程检查的变量,看它是否应该停止。
  2. 在主要功能中抓住ctrl-c。
  3. 捕获时,main函数设置指示线程应该停止的变量。
  4. 主要功能在线程上调用join()以等待它完成。
  5. 线程检查变量,看到它已设置,然后返回(停止)。
  6. join()返回并允许您的主要功能退出。