##########################
(1)多进程的ping
多个子进程的方式并行操作
os.fork():生成子进程
父进程负责fork子进程。
子进程负责做具体的工作,工作结束后退出。
fork_ping.py
import subprocess
import os
def ping(host):
retval = subprocess.run( #将函数的返回值存储到变量中
ping -c1 %s &> /dev/null % host,
shell=True
)
if retval.returncode == 0: #returncode的值为subprocess.run()返回值,0表明成功
print( %s:up % host)
else:
print( %s:down % host)
if __name__ == __main__ :
ips = ( 192.168.2.%s % i for i in range(1,255))
for ip in ips:
retval = os.fork() #开启254个子进程同时进行ping
ping(ip)
exit() #子进程必须要通过 exit() 退出子进程,否则for循环会在子进程中开启子进程。
(2)多线程
1个进程中多个线程的方式并行操作
threading.Thread():生成多线程
线程负责做具体的工作,工作结束后自动退出。
Thread_ping.py
import subprocess
import threading
def ping(host):
retval = subprocess.run( #将函数的返回值存储到变量中
ping -c1 %s &> /dev/null % host,
shell=True
)
if retval.returncode == 0: #returncode的值为subprocess.run()返回值,0表明成功
print( %s:up % host)
else:
print( %s:down % host)
if __name__ == __main__ :
ips = ( 192.168.2.%s % i for i in range(1,255))
for ip in ips:
t = threading.Thread(target=ping, args=(ip,)) #开启254个线程同时进行ping
#注意:将ping函数赋值给target,ping函数的变量通过元组传递给args,args传给函数,(ip,)表明一个元组
t.start() #线程会自动退出,t.start()相当于执行target(*args),相当于执行ping(*args)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...


