我试图创建一个程序,从用户的2个数字,并使用不同的线程来测试每一个,这是我到目前为止,我知道我是一个很好的一点,但我发现这个线程的东西非常困难
#!/usr/bin/python
import threading
class PrimeNumber(threading.Thread):
def __init__(self, number):
threading.Thread.__init__(self)
self.Number = number
def run(self):
counter = 2
while counter*counter < self.Number:
if self.Number % counter == 0:
print "%d is no prime number, because %d = %d * %d" % ( self.Number, self.Number, counter, self.Number / counter)
return
counter += 1
print "%d is a prime number" % self.Number
threads = []
while True:
input1 = long(raw_input("Enter first number: "))
if input < 1:
break
thread1 = PrimeNumber(input1)
threads += [thread1]
thread1.start()
input2 = long(raw_input("Enter second number: "))
if input < 1:
break
thread2 = PrimeNumber(input2)
threads += [thread2]
thread2.start()
for x in threads:
x.join()
我对你的代码做了一些修改。你知道吗
break
在循环之外没有意义。你知道吗input1 < 1
到input1 > 1
的两种情况都翻转过来,因为您希望在有有效输入时退出循环,而不是在有无效输入时退出循环。你知道吗<thread>.start
行移到for循环。你知道吗这就是现在的样子:
你在题名中说你要查五个数字。与其复制获取输入的特定代码段并为其再创建三次线程,不如将其放入for循环中,如下所示:
相关问题 更多 >
编程相关推荐