在Python2.x的两个不同模块中的两个函数之间共享数据
我知道在python中使用线程本地是可能的,但由于某些原因,我无法找到实现这一点的确切语法。我有下面的示例代码来测试这一点,但这不起作用- 模块1.py在Python2.x的两个不同模块中的两个函数之间共享数据,python,Python,我知道在python中使用线程本地是可能的,但由于某些原因,我无法找到实现这一点的确切语法。我有下面的示例代码来测试这一点,但这不起作用- 模块1.py import threading def print_value(): local = threading.local() // what should I put here? this is actually creating a new thread local instead of returning a thread loca
import threading
def print_value():
local = threading.local() // what should I put here? this is actually creating a new thread local instead of returning a thread local created in main() method of module2.
print local.name;
模块2.py
import module1
if __name__ == '__main__':
local = threading.local()
local.name = 'Shailendra'
module1.print_value()
Edit1-共享数据应该只对调用这些函数的线程可用,而不是对系统中的所有线程可用。一个例子是web应用程序中的请求id。如果它在同一进程中,为什么不使用 现在只需导入Bucket并将一些数据绑定到它
from mymodule import Bucket
b = Bucket()
b.name = 'bob'
b.loves_cats = True
在模块1中,定义一个全局变量,该变量是
线程。局部
模块1
import threading
shared = threading.local()
def print_value():
print shared.name
模块2
import module1
if __name__ == '__main__':
module1.shared.name = 'Shailendra'
module1.print_value()
Singleton的可能副本用于存储全局数据。它不能用于存储只对一个线程可用的信息以及该线程将为特定请求调用的所有函数。这种数据的一个例子是不能作为全局数据公开的用户信息,因为它将向所有其他用户公开用户信息。啊!我误解了你的意图;听起来好像你想在线程和函数之间共享数据(比如Flask中的“g”)。工作得很好。谢谢
import module1
if __name__ == '__main__':
module1.shared.name = 'Shailendra'
module1.print_value()