需要帮助通过线程更新全局变量

大家好,
我第一次在这里发帖,我很难弄清楚以确切的方式弄清楚
从不返回的函数中更新全局变量
任何值(因为功能是线程的目标,我不
在这种情况下,知道返回如何确切起作用).我确定我是
在这里缺少一些非常基本的东西.我的基本作品
导致问题的代码将是这样的:
-----------------------------------------------------------------------
LookUptab = {'1.9.7.3':'Bangkok','1.9.60.3':'Sydney'}
结果= {}
对于lookuptab.values()中的Val:
结果[val] = 0
def testt(loc):
全球结果
结果[loc] = 1
返回结果[LOC]
对于lookuptab.values()中的x:
thread = threading.thread(target = testt,args =(x))
thread.start()
打印结果
------------------------------------------------------------------------------------ -------
结果包含0而不是1.任何帮助清除我的障碍物都是极大的
感谢.
-Stephen

# 回答1

detexephender@gmail.com eécrit:
"将会" ?
我不得不解决一些问题以使您的代码运行(即,
导入螺纹并将正确的args传递给螺纹.线程).做
您自己一个忙:下次,花时间发布 *工作 *代码.
无论如何...这是一个(更正的)版本,这里有几个印刷品,
那里.我认为输出足够清楚:
导入线程
导入时间
LookUptab = {'1.9.7.3':'Bangkok','1.9.60.3':'Sydney'}
结果= lookuptab.values()的val的dict((val,0)))
def testt(loc):
全球结果
打印" t-%s:%s"%(LOC,结果)
结果[loc] = 1
打印" t-%s之后:%s"%(LOC,结果)
def main():
对于lookuptab.values()中的x:
thread = threading.thread(target = testt,args =(x,))
thread.start()
打印"主 - 无睡眠:%s"%结果
时间.
打印"主 -1s后:%s"%结果
如果__name__ =='__ main __':main()
输出是:
主 - 无睡:{'曼谷':0,'悉尼':0}
在以前的t-bangkok:{'angkok':0,'sydney':0}
t-bangkok之后:{'angkok':1,'sydney':0}
t-sydney之前:{'angkok':1,'sydney':0}
t-sydney之后:{'angkok':1,'sydney':1}
Main -1s后:{'angkok':1,'Sydney':1}
现在,如果我可以向您提供有关线程和全球的建议(或任何其他
共享状态):了解信号量.虽然这可能不是
在这个片段中,种族条件绝对是您的事
想要尽可能避免并干净地处理.
hth
# 回答2


在10月17日,晚上7:48,dedalusena ...@gmail.com写道:
当我尝试运行此操作时,我会收到6个arguments-Instead-1错误,因为
您写了args =(x)而不是args =(x,).我想知道你为什么看不到
这个错误?
除此之外,代码可行,除了您需要等待
在查看更新的结果之前,要完成执行的线程.有一个
查看螺纹.加入查看如何做到这一点.
- -
保罗·汉金
# 回答3


首先,对发布有问题的代码表示歉意.我的坏和
下次承诺进行尽职调查.
肯定会的.
即使多个用户同时启动此Python
prog 内存?让我像您建议的那样阅读此内容,然后再回来.
感谢你的帮助,
-stephen
10月17日,下午4:57
"将会" ?
我不得不解决一些问题以使您的代码运行(即,
导入螺纹并将正确的args传递给螺纹.线程).做
您自己一个忙:下次,花时间发布 *工作 *代码.
无论如何...这是一个(更正的)版本,这里有几个印刷品,
那里.我认为输出足够清楚:
导入线程
导入时间
LookUptab = {'1.9.7.3':'Bangkok','1.9.60.3':'Sydney'}
结果= lookuptab.values()的val的dict((val,0)))
def testt(loc):
全球结果
打印" t-%s:%s"%(LOC,结果)
结果[loc] = 1
打印" t-%s之后:%s"%(LOC,结果)
def main():
对于lookuptab.values()中的x:
thread = threading.thread(target = testt,args =(x,))
thread.start()
打印"主 - 无睡眠:%s"%结果
时间.
打印"主 -1s后:%s"%结果
如果__name__ =='__ main __':main()
输出是:
主 - 无睡:{'曼谷':0,'悉尼':0}
在以前的t-bangkok:{'angkok':0,'sydney':0}
t-bangkok之后:{'angkok':1,'sydney':0}
t-sydney之前:{'angkok':1,'sydney':0}
t-sydney之后:{'angkok':1,'sydney':1}
Main -1s后:{'angkok':1,'Sydney':1}
现在,如果我可以向您提供有关线程和全球的建议(或任何其他
共享状态):了解信号量.虽然这可能不是
在这个片段中,种族条件绝对是您的事
想要尽可能避免并干净地处理.
hth- hide引用文字 -
- 显示引号文字 -

标签: python

添加新评论