社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Jim Dennis

Jim Dennis 最近创建的主题
Jim Dennis 最近回复了
15 年前
回复了 Jim Dennis 创建的主题 » 什么样的python特性会激发C开发人员的兴趣?

对我来说,python是我使用过的最优雅的语言。语法是最低限度的(明显少于大多数标点符号),并有意仿效psuedo代码约定建模,程序员普遍使用这些约定来概述他们的意图。

巨蟒的 if __name__ == '__main__': 套件鼓励重用和测试驱动的开发。

例如,前天晚上,我一起黑了几千个 ssh 作业(同时约100个)并收集所有结果(输出、错误消息、退出值)…记录每一次的时间。它还处理超时(一个 命令可以无限期地在连接到一个抖动系统时暂停---它的连接超时和重试选项在套接字连接完成后不适用,不管身份验证是否暂停)。这只需要几十行python,而且它确实是最容易创建为类的(在 __main__ 在一个简单的包装器中进行命令行解析 圣米尼 . 这足以完成手头的工作(第二天我在25000台主机上运行了脚本,大约两个小时)。现在我可以在其他脚本中轻松地使用此代码:

from sshwrap import SSHJobMan

cmd = '/etc/init.d/foo restart'
targets = queryDB(some_criteria)

job = SSHJobMan(cmd, targets)
job.start()

while not job.done():
    completed = job.poll()
    # ...
    # Deal with incremental disposition of of completed jobs
for each in sorted(job.results):
    # ...
    # Summarize results

…等等。

所以我的脚本可以用于简单的作业…它可以作为一个模块导入,用于更专业的工作,这在包装器的命令行中是无法描述的。(例如,我可以启动“使用者”子流程,在每台成功执行作业的主机上处理其他工作,同时为报告超时或故障的所有主机发出服务通知单或自动重新启动请求等)。

对于没有独立用法的模块,我可以使用 圣米尼 包含单元测试的套件。因此,每个模块都可以包含自己的测试…实际上,可以使用 doctest 来自标准库的模块。(顺便说一下,这意味着文档注释中的格式正确的示例可以与实现保持同步…因为他们 单元测试套件的一部分)。