我试图更新线程,不断运行新的价值观,不时。你知道吗
class Test:
def __init__(self, num):
#testing reasons
self.num = num
def printloop(self, num):
self.num = num
#running is set to True sometime in the beginning
while running:
print(self.num)
time.sleep(3)
if not running:
print("finished")
def setnum(self, num):
self.num = num
我创建如下线程:
t1 = threading.Thread(target=test.printloop,args=("1"))
这样可以打印正确的arg。你知道吗
但是如果需要,我如何用新的值更新单线程呢?并非所有的线程都需要更新。我的类中的setnum方法显然不起作用,因为它会更新所有线程的值。你知道吗
我是否需要限制线程生存期并加入并等待它们完成。然后用新的价值观重建它们? 或者我应该为每个线程定义一个变量-我如何动态地这样做? 还是有更好的方法让我看不见? 谢谢!你知道吗
编辑:
我想我最终会得到这样的结果:
test1 = Test(1)
..
test5 = Test(5)
t1 = threading.Thread(target=test1.printloop,args=("1"))
t5 = threading.Thread(target=test5.printloop,args=("5"))
然后用一个方法对每个值进行设置?你知道吗
对于单个整数值,可以使
Test
成为thread的子类(并使run
调用printloop
)。然后其他线程可以安全地调用setnum
。由于GIL和设置单个值的事实,这是安全的,如果要执行更复杂的更新,则必须将setnum
和printloop
中的内环包装在锁中,以防止竞争条件。你知道吗编辑:一个简单的例子
相关问题 更多 >
编程相关推荐