python: thread
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 | def saveimageUrl(url,dirName): """ :param url: 链接 :param dirName: 文件夹名字 :return: """ #if not os.path.exists('website'): #os.mkdir('website') try : if os.path.exists( 'website' ): os.chdir( 'website' ) if not os.path.exists(f "{dirName}" ): os.mkdir(dirName) content = requests.get(url) # print(content.text) data = json.loads(content.text) # 转字典 # print(data) cn = 1 for d in data[ 'data' ][ 'rl' ][ 0 : 30 ]: #切片为前30个数据 print (d[ 'nn' ], d[ 'rs16' ], d[ 'rn' ]) av = 'https://apic.douyucdn.cn/upload' + '/' + d[ 'av' ] + '_big' + '.jpg' print (av) name = d[ 'nn' ] # 创建多线程 t = threading.Thread(target = loadAvator,args = (av,dirName,name)) t.start() #img1=Image.open(av) #img1=img1.save('img'+cn+'.jpg') #imagedata = requests.get(av) #with open(fr'{dirName}\{d["nn"]}.jpg','wb') as fp: #fp.write(imagedata) except Exception as ex: print (ex) def loadAvator(av,dirname,name): """ :param av:图片 :param dirname:文件夹名字 :param name:博主名称 :return: """ print ( "jpg:" ,fr '{dirname}\{name}.jpg' ) imagedata = requests.get(av) try : with open (fr '{dirname}\{name}.jpg' , 'wb' ) as fp: fp.write(imagedata.content) #fp.close() except Exception as ex: print (ex) |
调用:
1 2 3 4 | if not os.path.exists( 'website' ): os.mkdir( 'website' ) os.chdir( 'website' ) saveimageUrl( "https://www.douyu.com/gapi/rkc/directory/mixList/2_1/2" , 'geovindu' ) |
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 | import threading import time allmoeny = 0 lock = threading.Lock() def addmoneny(): #1 #lock.acquire() #加锁 #2 with lock: global allmoeny for _ in range ( 10000000 ): allmoeny + = 1 print (f "allmoeny:{allmoeny}" ) #1 #lock.release() #解锁 def sing(): print (threading.currentThread().name) for _ in range ( 3 ): print ( "sing" ) time.sleep( 0.5 ) def dance(): print (threading.currentThread().name) for _ in range ( 3 ): print ( "dance" ) time.sleep( 0.5 ) def main(): print (threading.currentThread().name) print (threading.currentThread().ident) # daemon 设置是否守护线程 # 守护线程,主线程一但结束,该线程也跟着结束 t = threading.Thread(target = sing,name = 'geovindu' ,daemon = True ) t.start() t2 = threading.Thread(target = dance,name = 'GeovinDu' ) t.start() print (threading.activeCount()) |
1 2 3 4 5 6 7 8 9 | content = requests.get( 'https://www.douyu.com/gapi/rkc/directory/mixList/2_1/2' ) #print(content.text) data = json.loads(content.text) #转字典 print (data) for d in data[ 'data' ][ 'rl' ]: print (d[ 'nn' ],d[ 'rs16' ],d[ 'av' ]) av = 'https://apic.douyucdn.cn/upload/' + '/' + d[ 'av' ] + '.jpg' print (av) |
1 2 3 4 5 6 7 8 9 10 11 | def savehtml(filename,filecontent): """ :param filename: :param filecontent: :return: """ if ( not os.path.exists(filename + '.html' )): with open (filename + '.html' , 'wb' ) as f: f.write(filecontent) f.close() |
调用:
1 2 3 4 5 6 7 | #test2() #test3() content = requests.get( 'https://www.baidu.com' ) content.encoding = 'utf-8' print (content.content) savehtml( 'baidu' ,content.content) |
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | import threading import time allmoeny = 0 lock = threading.Lock() #o the bank to deposit money, withdraw money, accounts, check balances, transfer. def addmoneny(): #1 #lock.acquire() #加锁 #2 with lock: global allmoeny for _ in range ( 10000000 ): allmoeny + = 1 print (f "allmoeny:{allmoeny}" ) #1 #lock.release() #解锁 def withdraw(money: float ): """ 取钱 :param money: :return: """ with lock: global allmoeny allmoeny = allmoeny - money print (allmoeny,money) def activedraw(money: float ): """ :param money: :return: """ t = threading.Thread(target = withdraw,args = (money,)) t.start() def activedeposit(meney: float ): """ :param meney: :return: """ t = threading.Thread(target = deposit,args = (meney,)) t.start() def deposit(money: float ): """ 存钱 :param money: :return: """ with lock: global allmoeny allmoeny = allmoeny + money print (allmoeny,money) def sing(): print (threading.currentThread().name) for _ in range ( 3 ): print ( "sing" ) time.sleep( 0.5 ) def dance(): print (threading.currentThread().name) for _ in range ( 3 ): print ( "dance" ) time.sleep( 0.5 ) def main(): print (threading.currentThread().name) print (threading.currentThread().ident) # daemon 设置是否守护线程 # 守护线程,主线程一但结束,该线程也跟着结束 t = threading.Thread(target = sing,name = 'geovindu' ,daemon = True ) t.start() t2 = threading.Thread(target = dance,name = 'GeovinDu' ) t.start() print (threading.activeCount()) |
调用:
1 2 3 4 5 | threadSing.activedeposit( 5000 ) threadSing.activedraw( 100 ) threadSing.activedeposit( 5000 ) threadSing.activedraw( 2000 ) print ( "账户余额:" ,threadSing.allmoeny) |
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 59 60 61 62 63 64 65 66 67 | def dance(): for _ in range ( 3 ): print ( "dancd" ) time.sleep( 1 ) def sing(): for _ in range ( 3 ): print ( "sing" ) time.sleep( 1 ) def dance(n): for _ in range (n): print ( "dancd" ) time.sleep( 1 ) def sing(n): for _ in range (n): print ( "sing" ) time.sleep( 1 ) def test1(): #t1=threading.Thread(target=sing) tstat = time.time() dance() sing() tend = time.time() - tstat print ( "耗时:" ,tend) def test2(): tstat = time.time() #创建多线程 t1 = threading.Thread(target = sing) t2 = threading.Thread(target = dance) #启动 异步执行 #t1.start() #t2.start() #启动 同步执行 花时间多,当然,看操作具体情况选择同步或异步 t1.start() t2.start() t1.join() #等待线程1,再执行第二线程 t2.join() tend = time.time() - tstat print ( "耗时:" ,tend) def test3(): tstat = time.time() #创建多线程 t1 = threading.Thread(target = sing,args = ( 3 ,)) t2 = threading.Thread(target = dance,args = ( 2 ,)) #启动 异步执行 #t1.start() #t2.start() #启动 同步执行 花时间多,当然,看操作具体情况选择同步或异步 t1.start() t2.start() t1.join() #等待线程1,再执行第二线程 t2.join() tend = time.time() - tstat print ( "耗时:" ,tend) |
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 | def dance(): for _ in range ( 3 ): print ( "dancd" ) time.sleep( 1 ) def sing(): for _ in range ( 3 ): print ( "sing" ) time.sleep( 1 ) def test1(): #t1=threading.Thread(target=sing) tstat = time.time() dance() sing() tend = time.time() - tstat print ( "耗时:" ,tend) def test2(): tstat = time.time() #创建多线程 t1 = threading.Thread(target = sing) t2 = threading.Thread(target = dance) #启动 异步执行 #t1.start() #t2.start() #启动 同步执行 花时间多,当然,看操作具体情况选择同步或异步 t1.start() t2.start() t1.join() #等待线程1,再执行第二线程 t2.join() tend = time.time() - tstat print ( "耗时:" ,tend) |
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2015-07-16 learning sql (second edition) script
2013-07-16 javascript: iframe switchSysBar 左欄打開關閉,兼容各瀏覽器操作
2013-07-16 SQL:exec sp_executesql 用法