WEB开发网
开发学院软件开发Python 使用 Python 实现多进程 阅读

使用 Python 实现多进程

 2010-09-22 11:23:22 来源:WEB开发网   
核心提示: 这里有两个类,一个 HostRecord 类和一个 SnmpSession 类,使用 Python 实现多进程(6),SnmpSession 类包含一个使用 Net-SNMP 的 SNMP 库实际执行查询的方法,由于调用一般都会进行阻塞,那么将会得到如下所示的非阻塞输出: mac%time

这里有两个类,一个 HostRecord 类和一个 SnmpSession 类。SnmpSession 类包含一个使用 Net-SNMP 的 SNMP 库实际执行查询的方法。由于调用一般都会进行阻塞,因此需要导入多进程库并使用 Process 运行它。此外,传入一个 task_queue 和一个 done_queue,这样可以同步并保护进出进程池的数据。如果对线程比较熟悉的话,将会注意到这种方式非常类似于线程 API 使用的方法。

需要特别关注一下主函数中 #clients 部分的主机列表。注意,可以对 50 或 100 台或更多主机运行异步 SNMP 查询,具体取决于当前使用的硬件。NUMBER_OF_PROCESSES 变量的设置非常简单,只是被设置为主机列表中的主机数。最终,最后两个部分在处理过程中从队列获取结果,然后将一个 “STOP” 消息放到队列中,表示可以终止进程。

如果在对 Net-SNMP 进行监听的 OS X 机器上运行代码,那么将会得到如下所示的非阻塞输出:

mac% time python multisnmp.py 
Unordered results: 
   ('Darwin mac.local 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; 
root:xnu-1228.9.59~1/RELEASE_I386 i386',) 
   ('Darwin mac.local 9.6.0 Darwin Kernel Version 9.6.0: Mon Nov 24 17:37:00 PST 2008; 
root:xnu-1228.9.59~1/RELEASE_I386 i386',) 
Stopping Process #0 
Stopping Process #1 
python multisnmp.py 0.18s user 0.08s system 107% cpu 0.236 total 

配置 OS X 的 SNMPD

如果希望配置 OS X 的 SNMP Daemon 以针对本文进行测试,那么需要执行下面的操作。首先,在 shell 中使用三个命令重写配置文件:

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

Tags:使用 Python 实现

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