python: thread
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)
调用:
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')
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())
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)
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()
调用:
#test2()
#test3()
content=requests.get('https://www.baidu.com')
content.encoding='utf-8'
print(content.content)
savehtml('baidu',content.content)
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())
调用:
threadSing.activedeposit(5000)
threadSing.activedraw(100)
threadSing.activedeposit(5000)
threadSing.activedraw(2000)
print("账户余额:",threadSing.allmoeny)
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)
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(涂聚文)
浙公网安备 33010602011771号