Python全局变量:函数类与函数之间共享

2024-10-01 15:29:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让下面的全局变量存储区对lvl1函数是可访问的,我已经能够将它传递给birdofprey类中的其他函数,但是在这个框架之外我不能得到它。我看过在函数之间使用全局变量等,也看到不鼓励使用全局变量。但是,基本上,我试图从所有线程中总结出存储的价值。因此,如果没有全局变量也能做到这一点,那也太好了。任何帮助都将不胜感激。在

代码:https://github.com/eWizardII/homobabel/blob/master/Experimental/demo_async_falcon.py


Tags: 函数代码httpsgithubmastercom框架线程
2条回答

如果要访问lvl1()下的storage_i,请使用:

birdofprey.storage_i

那么storage_i不是一个全局变量,而是一个类属性。在

替换此项:

global storage_i
storage_i = i 

有了这个:

^{pr2}$

第75行也有一个错误:

storage_ii = stroage_i + storage_ii

stroage_i原本是storage_i

这一行实际上应该是:

storage_ii =  birdofprey.storage_i + storage_ii

编辑:另外,如果没有仔细研究,那么使用类属性(storage iu i)似乎很容易受到竞争条件的影响。考虑使用互斥锁来保护对该属性的访问。我认为您还需要等待线程完成执行,然后才能访问这些值。在

但我不确定全局(或类属性)是否真的是您想要的。我想你真正想要的是一个线程局部变量,你可以在线程完成后访问它(参见Thread.join方法)。如果我读得正确,那么就忘掉我上面写的关于互斥锁的内容。相反,将storage\u i属性设置为self.storage_i(为每个线程创建一个单独的实例),然后在for循环中,将值作为urlv.storage_i访问。同样,在尝试访问每个线程的值之前,对每个线程执行一个join是很重要的。在

这就是我目前所能提供的所有帮助;也许明天早上(我的时间)我可以再次入住。在

相关问题 更多 >

    热门问题