所以我写了一个python,它将找到用户输入的图钉,除了一件事情外,其他所有东西都可以正常工作,那就是一旦找到图钉,脚本将不存在。找到引脚后,为什么可以杀死所有其他线程?

#!/usr/bin/env python
#
#
#
from threading import Thread
from random import randint
from time import sleep
from sys import exit
from os import system

system('clear');sleep(0.7)
Pin = int(raw_input('Enter a pin: '))


def Up():
    global Pin
    for pin in xrange(1111,10000):
        system('clear')
        print pin
        if pin == Pin:
            system('clear')
            print 'U Pin Found: %d'%pin;sleep(0.7)
            for i in range(3):
                exit()


def Down():
    global Pin
    pins = xrange(10000)
    for pin in reversed(pins):
        system('clear')
        print pin
        if pin == Pin:
            system('clear')
            print 'D Pin Found: %d'%pin;sleep(0.7)
            exit()



def Random():
    global Pin

    while True:
        pins = randint(1111,10000)
        print pins
        if pins == Pin:
           system('clear')
           print 'R Pin Found: %d'%pins;sleep(0.7)
           exit()


Task1 = Thread(target=Up,args=())
Task2 = Thread(target=Down,args=())
Task3 = Thread(target=Random,args=())


Task1.start()
Task2.start()
Task3.start()

最佳答案

您不能简单地终止它们。但是,您可以要求停止。请参见示例:

from threading import Thread
from random import randint
from time import sleep
from sys import exit
from os import system

system('clear');sleep(0.7)
Pin = int(raw_input('Enter a pin: '))

terminateAll = false

def Up():
    global Pin
    for pin in xrange(1111,10000):
        if terminateAll:
            exit()
        system('clear')
        print pin
        if pin == Pin:
            terminateAll = true
            system('clear')
            print 'U Pin Found: %d'%pin;sleep(0.7)
            for i in range(3):
                exit()


def Down():
    global Pin
    pins = xrange(10000)
    for pin in reversed(pins):
        if terminateAll:
            exit()
        system('clear')
        print pin
        if pin == Pin:
            terminateAll = true
            system('clear')
            print 'D Pin Found: %d'%pin;sleep(0.7)
            exit()



def Random():
    global Pin

    while True:
        if terminateAll:
            exit()
        pins = randint(1111,10000)
        print pins
        if pins == Pin:
           terminateAll = true
           system('clear')
           print 'R Pin Found: %d'%pins;sleep(0.7)
           exit()


Task1 = Thread(target=Up,args=())
Task2 = Thread(target=Down,args=())
Task3 = Thread(target=Random,args=())


Task1.start()
Task2.start()
Task3.start()

07-24 09:38
查看更多