使用 Python 实现多进程
2010-09-22 11:23:22 来源:WEB开发网 $ sudo cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak.testing
$ sudo echo "rocommunity public" > /etc/snmp/snmpd.conf
$ sudo snmpd
这将有效地备份您的配置,生成一个新配置,然后重新启动 snmpd。步骤与许多 UNIX 平台类似,但步骤 3 是除外,该步骤需要重新启动 snmpd,或发送一个 HUP。如果希望 OS X 在启动后永久运行 snmpd,那么可以按如下所示编辑这个 plist 文件:
/System/Library/LaunchDaemons/org.net-snmp.snmpd.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD
PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>org.net-snmp.snmpd</string>
<key>OnDemand</key>
<false/>
<key>Program</key>
<string>/usr/sbin/snmpd</string>
<key>ProgramArguments</key>
<array>
<string>snmpd</string>
<string>-f</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
如果希望对多台机器进行测试,那么使用下面的内容替换主机行就可以轻松执行修改:
hosts = ["192.168.1.100", SnmpSession(DestHost="example.com", Community="mysecret"),
"example.net", "example.org"]
运行作业的 worker 函数将获得两个字符串形式的主机名和完整的 SnmpSession 对象。
结束语
官方文档与多进程库一样有用,您应当特别关注其中提到的以下这些事项:避免共享状态;最好显式地连接所创建的进程;尽量避免终止具有共享状态的进程;最后确保在连接前删除队列中的所有队列项,否则将出现死锁。官方文档中提供了有关最佳实践的更多详细信息,因此建议您阅读 参考资料 小节中的编程资源指南。
除了以上的注意事项之外,多进程也是 Python 编程语言的一大增强。尽管 GIL 对线程的限制曾经被认为是一个弱点,但是通过包含强大灵活的多进程库,Python 不仅弥补了这个弱点,而且还得到了增强。非常感谢 David Goodger 担任本文的技术审校!
更多精彩
赞助商链接