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)

  

posted @ 2023-07-16 10:12  ®Geovin Du Dream Park™  阅读(11)  评论(0)    收藏  举报