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)

  

posted @   ®Geovin Du Dream Park™  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 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 用法
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示