[英]Implementing threads in Python
我是初学者TT
我想通过编写一个由线程执行的 function 来实现一个算术计算器。
但是,错误不断弹出
拜托,我想知道为什么会弹出错误
==================================================== ==
import threading
def execute(number) :
a = int(input('first nuber ==> '))
b = int(input('second number ==> '))
c = input('+, -, *, /')
if c == '+':
print(a + b)
elif c == '-':
print(a - b)
elif c == '*':
print(a * b)
elif c == '/':
print(a / b)
else:
print('FALSE')
print(threading.currentThread().getName() , number)
if __name__ == "__main__" :
for i in range(1, 10 ) :
my_thread = threading.Thread( target= execute , args = (i, ))
my_thread.start()
在进一步了解线程之前,您应该了解竞争条件和互斥。 您的程序有一个竞争条件,所有 10 个线程都在竞争一个资源(用户input
/对 I/O 的访问)。 哪个线程将赢得比赛是随机的,因此您的计算器很难使用。 我在这里介绍了互斥,每个线程将在将控制权交给另一个线程之前在独占区域内执行所有 I/O。
import threading
mutex = threading.Lock()
def execute(number) :
mutex.acquire()
print(threading.currentThread().getName() , number)
a = int(input('first nuber ==> '))
b = int(input('second number ==> '))
c = input('+, -, *, /')
mutex.release()
if c == '+':
print(a + b)
elif c == '-':
print(a - b)
elif c == '*':
print(a * b)
elif c == '/':
print(a / b)
else:
print('FALSE')
if __name__ == "__main__" :
for i in range(1, 10 ) :
my_thread = threading.Thread( target= execute , args = (i, ))
my_thread.start()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.