在 Python 文件运行的过程中怎么动态从外部加载数据?

2020-09-18 16:35:36 +08:00
 taomujian
比如有个 py 脚本是输出 1,现在想在不中断程序的情况下输出 1 和 2,除了开个线程一直与数据库连接或者一直监控配置文件内容有无改变之外?各位巨佬还有其他的方式吗?
1913 次点击
所在节点    Python
16 条回复
so1n
2020-09-18 16:38:45 +08:00
如果你固定只有输出 1 还有输出 1 和 2 两种模式 可以用信号
crclz
2020-09-18 16:41:22 +08:00
数据库(拉)或消息队列(推)是标准解决方案
taomujian
2020-09-18 16:48:20 +08:00
@so1n 不是固定的,会经常改变
taomujian
2020-09-18 16:51:06 +08:00
@crclz ok,定时向数据库拉?效率不高.......
luckyrayyy
2020-09-18 16:54:31 +08:00
不太懂你的问题,Python 有 nio 嘛?
taomujian
2020-09-18 16:59:11 +08:00
@luckyrayyy 就是在不中断程序的情况下怎么修改程序中的一个变量...
luckyrayyy
2020-09-18 17:04:19 +08:00
@taomujian 已经在运行的程序?是指动态加载、热部署之类的嘛
neoblackcap
2020-09-18 17:05:03 +08:00
不改程序几乎是不可能的,能改程序的话,无非就是通讯的问题。那么就会变成 rpc 的选择
你可以选择 grpc, brpc 等工具建立通讯。也可以用 mysql, redis 等数据库进行通讯,也可以用 rabbitmq 之类的建立通讯。方法太多
taomujian
2020-09-18 17:09:04 +08:00
@luckyrayyy 不是,就是一个普通执行的程序
SingeeKing
2020-09-18 17:33:49 +08:00
inotify
tmackan
2020-09-18 18:35:56 +08:00
程序在不变的情况下,你要改变输出,只能改变输入啊
tmackan
2020-09-18 18:36:57 +08:00
你的使用场景描述不够清晰,如果输入是从 redis 获取的,那你可以去改变 redis 的数据
如果你是在程序中设置的 x=1,这种改成 x=2 ??不可能
superrichman
2020-09-18 18:41:39 +08:00
你是想直接修改内存吗?
laike9m
2020-09-19 03:08:44 +08:00
不是。。你就不能开个 server 么
taomujian
2020-09-25 10:35:06 +08:00
@superrichman 不想。。。
taomujian
2020-09-25 10:36:02 +08:00
@laike9m 可以开,想问下有没有其他更好的方式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/708347

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX