gpt4 book ai didi

python - 如何使用线程中的数据?

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:17 26 4
gpt4 key购买 nike

我有一个带有线程的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

最佳答案

我建议你只使用全局变量。如果您想共享变量 thevar 的数据,例如:在脚本的最顶部:

thevar = 0
global thevar

在每个使用 thevar 的线程中:

global thevar

就是这样,现在所有线程都可以访问 thevar 并将其计算结果存储在那里。

关于python - 如何使用线程中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55173446/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com