WEB开发网
开发学院软件开发Python 在长期运行的进程中动态重新装入模块 阅读

在长期运行的进程中动态重新装入模块

 2007-03-29 11:58:20 来源:WEB开发网   
核心提示: 在 dyn_txt2html.py 脚本中,请注意当执行 from t2h_textfuncs import * 语句时,在长期运行的进程中动态重新装入模块(5),所有以前在 dmTxt2Html 中定义的函数(如 Typographify() )都将由 t2h_textfuncs 版本的

在 dyn_txt2html.py 脚本中,请注意当执行 from t2h_textfuncs import * 语句时,所有以前在 dmTxt2Html 中定义的函数(如 Typographify() )都将由 t2h_textfuncs 版本的同名函数替换。当然,如果 t2h_textfuncs 的函数被注释掉了,则不会被替换。

有件小问题得注意,不同的系统以不同的方式处理写入 STDERR。在类 UNIX 系统中,运行脚本时可以重定向 STDERR;但是在当前 OS/2 外壳和 Windows/DOS 中,STDERR 消息将附加到控制台输出。您也许要将以上的错误/警告写到日志文件中,或者只习惯于将 STDOUT 定向到文件(可能会更有用)。例如:

'dyn_txt2html' 的命令行会话

G:  xt2html> python dyn_txt2html.py test.txt > test.html
Cannot currently download Txt2Html updates

错误转至控制台;经转换的输出转至文件。

一件更有趣的事情是 dyn_txt2html.py 为什么不下载整个 dmTxt2Html 模块,而仅下载支持模块。当然这是有理由的。 t2h_textfuncs 支持模块远远小于主 dmTxt2Html 模块,特别是因为大多数函数已经过删节/被注释掉。在调制解调器连接上,它的速度明显快很多。但下载大小并不是主要原因。

对于 Txt2Html,如果用户自动下载整个最新模块也没关系。但程序逻辑是 分布式 的系统(特别是维护责任也是分布式的)会发生什么情况呢?您也许会让 Alice、Bob 和 Charlie 分别负责模块 Funcs_A 、 Funcs_B 和 Funcs_C 。他们每个人都对他们负责的函数进行定期(且独立)更改,并将最新和最好的版本上传到他们自己的网站(如 http://alice.com/Funcs_A.py)。在这种情况下,让三个程序员都更改同一个主模块不太可行。但可以直接扩展类似于 dyn_txt2html.py 的脚本以在启动时尝试导入 Funcs_A 、 Funcs_B 和 Funcs_C (如果不能获取这些资源,则会退到 MainProg 版本)。

上一页  1 2 3 4 5 6  下一页

Tags:长期 运行 进程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接