V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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 · Sep 18, 2020 · 2554 views
    This topic created in 2046 days ago, the information mentioned may be changed or developed.
    比如有个 py 脚本是输出 1,现在想在不中断程序的情况下输出 1 和 2,除了开个线程一直与数据库连接或者一直监控配置文件内容有无改变之外?各位巨佬还有其他的方式吗?
    16 replies    2020-09-25 10:36:02 +08:00
    so1n
        1
    so1n  
       Sep 18, 2020
    如果你固定只有输出 1 还有输出 1 和 2 两种模式 可以用信号
    crclz
        2
    crclz  
       Sep 18, 2020
    数据库(拉)或消息队列(推)是标准解决方案
    taomujian
        3
    taomujian  
    OP
       Sep 18, 2020
    @so1n 不是固定的,会经常改变
    taomujian
        4
    taomujian  
    OP
       Sep 18, 2020
    @crclz ok,定时向数据库拉?效率不高.......
    luckyrayyy
        5
    luckyrayyy  
       Sep 18, 2020
    不太懂你的问题,Python 有 nio 嘛?
    taomujian
        6
    taomujian  
    OP
       Sep 18, 2020
    @luckyrayyy 就是在不中断程序的情况下怎么修改程序中的一个变量...
    luckyrayyy
        7
    luckyrayyy  
       Sep 18, 2020
    @taomujian 已经在运行的程序?是指动态加载、热部署之类的嘛
    neoblackcap
        8
    neoblackcap  
       Sep 18, 2020
    不改程序几乎是不可能的,能改程序的话,无非就是通讯的问题。那么就会变成 rpc 的选择
    你可以选择 grpc, brpc 等工具建立通讯。也可以用 mysql, redis 等数据库进行通讯,也可以用 rabbitmq 之类的建立通讯。方法太多
    taomujian
        9
    taomujian  
    OP
       Sep 18, 2020
    @luckyrayyy 不是,就是一个普通执行的程序
    SingeeKing
        10
    SingeeKing  
    PRO
       Sep 18, 2020 via iPhone
    inotify
    tmackan
        11
    tmackan  
       Sep 18, 2020
    程序在不变的情况下,你要改变输出,只能改变输入啊
    tmackan
        12
    tmackan  
       Sep 18, 2020
    你的使用场景描述不够清晰,如果输入是从 redis 获取的,那你可以去改变 redis 的数据
    如果你是在程序中设置的 x=1,这种改成 x=2 ??不可能
    superrichman
        13
    superrichman  
       Sep 18, 2020 via iPhone
    你是想直接修改内存吗?
    laike9m
        14
    laike9m  
       Sep 19, 2020
    不是。。你就不能开个 server 么
    taomujian
        15
    taomujian  
    OP
       Sep 25, 2020
    @superrichman 不想。。。
    taomujian
        16
    taomujian  
    OP
       Sep 25, 2020
    @laike9m 可以开,想问下有没有其他更好的方式
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5806 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 75ms · UTC 07:31 · PVG 15:31 · LAX 00:31 · JFK 03:31
    ♥ Do have faith in what you're doing.