V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
taomujian
V2EX  ›  Python

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

  •  
  •   taomujian · 2020-09-18 16:35:36 +08:00 · 2026 次点击
    这是一个创建于 1511 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如有个 py 脚本是输出 1,现在想在不中断程序的情况下输出 1 和 2,除了开个线程一直与数据库连接或者一直监控配置文件内容有无改变之外?各位巨佬还有其他的方式吗?
    16 条回复    2020-09-25 10:36:02 +08:00
    so1n
        1
    so1n  
       2020-09-18 16:38:45 +08:00
    如果你固定只有输出 1 还有输出 1 和 2 两种模式 可以用信号
    crclz
        2
    crclz  
       2020-09-18 16:41:22 +08:00
    数据库(拉)或消息队列(推)是标准解决方案
    taomujian
        3
    taomujian  
    OP
       2020-09-18 16:48:20 +08:00
    @so1n 不是固定的,会经常改变
    taomujian
        4
    taomujian  
    OP
       2020-09-18 16:51:06 +08:00
    @crclz ok,定时向数据库拉?效率不高.......
    luckyrayyy
        5
    luckyrayyy  
       2020-09-18 16:54:31 +08:00
    不太懂你的问题,Python 有 nio 嘛?
    taomujian
        6
    taomujian  
    OP
       2020-09-18 16:59:11 +08:00
    @luckyrayyy 就是在不中断程序的情况下怎么修改程序中的一个变量...
    luckyrayyy
        7
    luckyrayyy  
       2020-09-18 17:04:19 +08:00
    @taomujian 已经在运行的程序?是指动态加载、热部署之类的嘛
    neoblackcap
        8
    neoblackcap  
       2020-09-18 17:05:03 +08:00
    不改程序几乎是不可能的,能改程序的话,无非就是通讯的问题。那么就会变成 rpc 的选择
    你可以选择 grpc, brpc 等工具建立通讯。也可以用 mysql, redis 等数据库进行通讯,也可以用 rabbitmq 之类的建立通讯。方法太多
    taomujian
        9
    taomujian  
    OP
       2020-09-18 17:09:04 +08:00
    @luckyrayyy 不是,就是一个普通执行的程序
    SingeeKing
        10
    SingeeKing  
       2020-09-18 17:33:49 +08:00 via iPhone
    inotify
    tmackan
        11
    tmackan  
       2020-09-18 18:35:56 +08:00
    程序在不变的情况下,你要改变输出,只能改变输入啊
    tmackan
        12
    tmackan  
       2020-09-18 18:36:57 +08:00
    你的使用场景描述不够清晰,如果输入是从 redis 获取的,那你可以去改变 redis 的数据
    如果你是在程序中设置的 x=1,这种改成 x=2 ??不可能
    superrichman
        13
    superrichman  
       2020-09-18 18:41:39 +08:00 via iPhone
    你是想直接修改内存吗?
    laike9m
        14
    laike9m  
       2020-09-19 03:08:44 +08:00
    不是。。你就不能开个 server 么
    taomujian
        15
    taomujian  
    OP
       2020-09-25 10:35:06 +08:00
    @superrichman 不想。。。
    taomujian
        16
    taomujian  
    OP
       2020-09-25 10:36:02 +08:00
    @laike9m 可以开,想问下有没有其他更好的方式
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:35 · PVG 04:35 · LAX 12:35 · JFK 15:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.