我在带线程的python上有一个代码,但是我不知道如何使用数据(例如:第一和第二个线程中的if (f(x) + g(y))<5)
。
我的输出:
x 2
y 1
0 0
True
x 4
y 2
0 0
True
期望输出:
x 2
y 1
2 1
True
x 4
y 2
4 2
False
我的代码:
import threading
def f(x, event_for_wait, event_for_set):
for i in range(5):
event_for_wait.wait()
event_for_wait.clear()
x = x + 2
print("x",x)
event_for_set.set()
def g(y, event_for_wait, event_for_set):
for i in range(5):
event_for_wait.wait()
event_for_wait.clear()
y = y + 1
print("y",y)
event_for_set.set()
def func (x , y, event_for_wait, event_for_set):
for i in range(5):
event_for_wait.wait()
event_for_wait.clear()
print(x, y)
if x + y < 5:
print(True)
event_for_set.set()
else:
print(False)
event_for_set.set()
x = 0
y = 0
# init events
e1 = threading.Event()
e2 = threading.Event()
e3 = threading.Event()
# init threads
t1 = threading.Thread(target=f, args=(x, e1, e2))
t2 = threading.Thread(target=g, args=(y, e2, e3))
t3 = threading.Thread(target=func, args=(x, y, e3, e1))
t1.start()
t2.start()
t3.start()
e1.set() # initiate the first event
答案 0 :(得分:0)
我建议您只使用全局变量。如果要共享变量thevar的数据,例如: 在脚本的最上方:
thevar = 0
global thevar
在使用thevar的每个线程中:
global thevar
就是这样,现在所有线程都可以访问thevar并将其计算存储在那里。