这是导致我遇到问题的脚本: 3个线程:T1,S1,S2和2个队列。 T1将上下文变量发送到q_Strategy_1和q_Strategy_2。 S1和S2分别从q_Strategy_1和q_Strategy_2读取上下文。 S1和S2将一些信息添加到上下文中并进行打印。
预期输出为:
{'Var_1': 'a', 'Var_2': 'b'}
{'Var_1': 'a', 'Var_2': 'b', 'Var_3': 'c'}
{'Var_1': 'a', 'Var_2': 'b', 'Var_4': 'd'}
以下脚本返回时
{'Var_1': 'a', 'Var_2': 'b'}
{'Var_1': 'a', 'Var_2': 'b', 'Var_3': 'c'}
{'Var_1': 'a', 'Var_2': 'b', 'Var_3': 'c', 'Var_4': 'd'}
关于我如何使用变量/类/线程,可能是语法错误,但我找不到它:(
import threading
import time
import queue
#setup queue environment
q_Strategy_1 = queue.Queue(100)
q_Strategy_2 = queue.Queue(100)
class T1(object):
def __init__(self, name=None):
self.name = name
thread = threading.Thread(target=self.run, args=())
thread.start()
self.__context = {}
def run(self):
while True:
self.__context = {'Var_1':"a",'Var_2':"b"}
print(self.__context)
q_Strategy_1.put(self.__context)
q_Strategy_2.put(self.__context)
time.sleep(3)
class S1(object):
def __init__(self, name=None):
self.name = name
thread = threading.Thread(target=self.run, args=())
thread.start()
self.__context = {}
def run(self):
while True:
self.__context = {}
if not q_Strategy_1.empty():
self.__context = q_Strategy_1.get()
self.__context['Var_3'] = "c"
print(self.__context)
class S2(object):
def __init__(self, name=None):
self.name = name
thread = threading.Thread(target=self.run, args=())
thread.start()
self.__context = {}
def run(self):
while True:
self.__context = {}
if not q_Strategy_2.empty():
self.__context = q_Strategy_2.get()
self.__context['Var_4'] = "d"
print(self.__context)
T1 = T1(name='T1')
S1 = S1(name='S1')
S2 = S2(name='S2')