python多线程操作

参考链接:Python多线程编程(详细:适合小白入门)-CSDN博客

线程是程序执行的最小单元,实际上进程只负责分配资源,而利用这些资源执行程序的是线程,也就是说进程是线程的容器,一个进程中最少有一个线程来负责执行程序.

进程

 线程

 python线程的创建步骤

        ①导入线程模块
                import threading
 
        ②通过线程类创建进程对象
                线程对象 = threading.Thread(target = 任务名)
 
        ③启动线程执行任务
                线程对象.start()

运行多次,

 

可以看到线程间的执行顺序是无序的

了解线程的使用方法后,可以通过线程并发探测目标主机,几秒钟很快就能探测整个网段

import subprocess as p  # p等同于subprocess
import threading
def ping(ip):
    pings=p.Popen('ping -n 2 %s' % ip ,shell=True,stdin=p.PIPE,stdout=p.PIPE,stderr=p.PIPE,encoding='gbk') #这时windows,linux为ping -c 2
    result=pings.stdout.read()
    if 'TTL' in result:
        print(ip,'alive') 
def duo(ip):
    iplist=ip.split('.')
    ipd=iplist[0]+'.'+iplist[1]+'.'+iplist[2]
    for i in range(1,256):
        targetip=ipd+'.'+str(i)
        t=threading.Thread(target=ping,args=(targetip,))
        t.start()
if __name__=='__main__':
    duo('192.168.199.1')

 如果不采用线程,默认循环的方法进行探测会慢很多,跑了几分钟才结束

 

  

posted @ 2024-07-23 15:36  白云之东  阅读(37)  评论(0)    收藏  举报