存储和加载str:func Python字典

3

好的,我想知道这样做是否会影响代码,以及我是否正确地执行了它。

基本上,假设在一个文件中我有一个名为commands的字典(在类内部),而在另一个文件中创建了另一个类的对象,并使用了该字典。在运行时,我编辑字典并添加新功能。现在我需要重新加载字典,而不必重新启动整个脚本(因为这会影响许多使用我的服务的人)。如果我向脚本发送一个指示应重新加载字典的信号(它是一个套接字服务器),那么我该如何在已经导入模块的情况下重新导入模块呢?重新导入模块会影响已经创建的对象吗?还是我必须以某种方式重新加载对象? (请注意,这些对象包含一个活动套接字,我不希望关闭该套接字)。


你确定它不是自动“重新加载”吗?如果在bar.py中有对foo.my_dict的引用,并且您修改了foo.my_dict,那么bar的输出将反映出这一点。 - Adam Smith
2
我不是像这样编辑 my_dict["key"] = "value" 一样,而是直接编辑文件本身,这就是为什么我需要以某种方式重新加载它的原因。 - icecreamscoop
1个回答

0

最好将数据存储在数据库中,例如支持类似字典的数据结构Redis。这样你就可以避免重新加载的问题,因为数据库进程会确保获取的数据始终是最新的。


1
我想这样做,但是字典是str:func类型的,而且我无法将Python函数存储在数据库中。 - icecreamscoop
这样怎么样:您不存储函数对象,而是存储函数源代码。您还可以序列化Python函数https://dev59.com/0HM_5IYBdhLWcg3wvFvI#1253813 - Mikko Ohtamaa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接