【发布时间】:2016-11-01 05:45:05
【问题描述】:
所以我写了一个 python,它会找到用户输入的 pin,除了一件事之外一切正常,那就是一旦找到 pin,脚本就不会存在。有没有什么原因我可以在找到 pin 后杀死所有其他线程?
#!/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()
【问题讨论】:
-
题外话:你清除屏幕的方式不是很便携。考虑使用
os.system('cls' if os.name == 'nt' else 'clear')而不是os.system('clear'),它适用于Windows 和Linux。 -
@martineau 我根本不会这样做。我看不出这样做的意义。
-
@glglgl:我的评论不是写给你的。重点是可移植性。它将允许其他操作系统上的人轻松运行代码(并且可能提供一个很好的问题答案)。
-
@martineau 即使没有针对我发表评论,我也可以随意评论这个话题。毕竟是一个大家可以随意添加cmets的系统。关于便携性,你是完全正确的:如果真的需要清除屏幕,最好是便携。但是我个人觉得一遍又一遍地清屏的程序很烦人,我试图用这个来表达什么。 (我个人更喜欢
subprocess而不是os.system(),但这是另一点。)
标签: python multithreading python-2.7 python-3.x