import threading
class PrimeNumber(threading.Thread):
def __init__(self, number):
threading.Thread.__init__(self)
self.Number = int(number)
def run(self):
counter = 2
while counter*counter <= self.Number:
if self.Number % counter == 0:
promptLock.acquire()
if(prompt):print()
print("%d is not prime number" % (self.Number))
if(prompt):print("number: ",end="")
promptLock.release()
return
counter += 1
promptLock.acquire()
if(prompt): print()
print ("%d is a prime number" % self.Number)
#strange line
debug_line = 1
if(debug_line==1):
if(prompt):print("number: ",end="")
if(debug_line==2):
if(prompt):print("number: ")
promptLock.release()
threads = []
prompt=False
promptLock = threading.Lock()
def promptlocker():
global prompt
promptLock.acquire()
prompt = not prompt
promptLock.release()
while True:
promptlocker()
print("number: ",end="")
input1 = int(input())
promptlocker()
if input1 < 1:
break
thread = PrimeNumber(input1)
threads += [thread]
thread.start()
for x in threads:
x.join()
I가 python3 스레딩을 테스트하는이 코드를 사용하고 python3 작동하지
내가 입력 주면 1,000,000,099,999,963 후 55
제 입력이 길고 시간 그래서이 계산 될 소모적 새로운 쓰레드 그리고 그때까지 새로운 입력을 요구하는 프롬프트가 생기고 새로운 입력을 추가 할 수 있고 계산이 더 쉽다면 쉽게 계산되고 인쇄 될 수 있습니다. 그리고 많은 수를 계산할 쓰레드가 끝나면 출력을 출력합니다.
코드가 숫자 인 경우 을 묻는 경우은 입니다.이면 다시 "번호 :"를 인쇄하고 싶습니다. 라인인쇄 기능
if(prompt):print("number: ",end="")
이
를 작동하지 않는 이유내가 출력이
number: 1000000099999963
number: 55
55 is not prime number
number:
1000000099999963 is a prime number
number:
되고 싶어하지만 debug_line을 1로 설정하면 출력은
number: 1000000099999963
number: 55
55 is not prime number
number:
1000000099999963 is a prime number
입니다, 잘 모릅니다
만약 debug_line을 2로 설정하면, 그 라인은 작동합니다
if(prompt):print("number: ")