|
arrow8899Aug 2, 2019
1
|
|
leishi1313Aug 2, 2019 via Android
3
@qw30716 那你为什么不直接 c 调 a ?我觉得你还是来个实际点的例子吧
|
|
leishi1313Aug 2, 2019 via Android
4
要不你还是考虑来一个 config.py ,b 和 c 都直接读别从 arg 读了
|
|
5
@leishi1313 肯定是需要从 arg 读的,因为这个值一直变
|
|
6
@leishi1313 我本身以为 python 有类似 java 的 static 保存,但是搜索了一下,好像没有发现
|
|
andylsrAug 2, 2019 via Android
7
multiprocessing.queue
|
|
leishi1313Aug 2, 2019 via Android
8
@qw30716 python 没 vm 能 static 到哪呢。这样子的话考虑 pickle 持久化到文件?
|
|
10
@leishi1313 每次先写到文件,然后从文件读?这个作为最后考虑
|
|
co3siteAug 2, 2019 via Android
12
完全没看懂你的这公有变量传递的意义,调用过来调用过去最终只是为了一个保存吗?
|
|
andylsrAug 2, 2019 via Android
14
@qw30716 官方文档里有代码,用 basemanager 注册一个 queue,监听一个端口,别的 py 从 queue 读数据就行了
|
|
16
|
|
HuelseAug 2, 2019
17
比较规范的是写 get 和 set 函数,
而且推荐写成类,然后在一个 py 文件里调用即可 |
|
XIVN1987Aug 2, 2019
19
|
|
lishunan246Aug 2, 2019 via Android
20
跨进程用文件或者 SQLite
|
|
oahebkyAug 2, 2019
21
b.py.jinja2
```python from functools import namedtuple specific_var = namedtuple('specific_var', ('key1', 'key2')) SPC_VAR = specific_var(key1='{{ value1 }}', key2='{{ value2 }}') ``` a.py ```python import os, sys from jinja2 import Template if __name__ == "__main__": value1 = sys.argv[1] value2 = sys.argv[2] with open('b.py.jinja2', 'r') as fp: data = fp.read() template = Template(data) dst_data = template.render(value1=value1, value2=value2) with open('b.py', 'w') as fp: fp.write(dst_data) ``` ```shell ➜ pip install jinja2 ➜ Python python a.py foo bar ➜ Python ipython # c.py Python 3.6.8 (... ... IPython 7.6.1 ... Type '?' for help. In [1]: from b import SPC_VAR In [2]: SPC_VAR.key1 Out[2]: 'foo' In [3]: SPC_VAR.key2 Out[3]: 'bar' In [4]: ``` |
|
oahebkyAug 2, 2019
22
```
测试 V2EX support markdown ``` |
|
Trim21Aug 2, 2019 via Android
23
不要用 from a import var 用 import a 然后使用 a.var 就好了
|
|
oahebkyAug 2, 2019
24
好吧。上面代码文件有缩进。只能考楼主自己了。
|
|
oahebkyAug 2, 2019
25
如果修改的时候,cDOTpy+bDOTpy` 相关进程正在运行。想要不关闭 /重启进程,那么进程间通信(与 aDOTpy )是必须的。
|
|
26
早上一直回复不了,被 V2EX 禁言了
|
|
zerozeAug 2, 2019
29
写入 config.ini,用 config 包处理
|
|
oahebkyAug 2, 2019
30
@Trim21 #23 原文:“不要用 from a import var 用 import a 然后使用 a.var 就好了”
====== 回复:这也是一个知识点。 楼主的这个问法太模糊(有一个需求实现不了,但是却问语言本身如何实现某某某 -- 可能这个实现的思路本身就是有问题的;应该抛开语言讲清楚需求是什么,然后后面可以加上做过的尝试)。所以大家只能按照自己对你的问题的理解来提供建议。 如果你的 aDOTpy 是一个命令行解析程序,bDOTpy 是保存解析过的数据,cDOTpy 中有个总函数(比如 `run`) 被 aDOTpy 在处理完了命令行数据之后调用,cDOTpy 会导入 bDOTpy,那么可以说应当使用 #23 的方式。 |
|
ptreesAug 2, 2019
31
我想了想,存取一个公用的数据,这不就是数据库的作用吗...
|