Python3.5线程锁

Python3.5线程锁

在多线程环境下,遇到线程锁的情况下,每个线程会并行执行锁之前的代码,然后在锁范围内进行串行执行,随后再并发执行


import threading
import time

loc = threading.Lock()
num = 1


def threadrun(i):
    global num
    print(i,'ready')
    loc.acquire()
    num = num + 1
    time.sleep(0.01)
    print(i,'ok',time.time(),">>",num)
    loc.release()

if __name__ == '__main__':
    threadings = []
    for i in range(100):
        t = threading.Thread(target=threadrun, args=(i,))
        threadings.append(t)

    for i in range(len(threadings)):
        threadings[i].start()

输出:

0 ready
1 ready
2 ready
3 ready
4 ready
5 ready
6 ready
7 ready
8 ready
9 ready
10 ready
11 ready
12 ready
13 ready
14 ready
15 ready
16 ready
17 ready
18 ready
19 ready
20 ready
21 ready
22 ready
23 ready
24 ready
25 ready
26 ready
27 ready
28 ready
29 ready
30 ready
31 ready
32 ready
33 ready
34 ready
35 ready
36 ready
37 ready
38 ready
39 ready
40 ready
41 ready
42 ready
43 ready
44 ready
45 ready
46 ready
47 ready
48 ready
49 ready
50 ready
51 ready
52 ready
53 ready
54 ready
55 ready
56 ready
57 ready
58 ready
59 ready
60 ready
61 ready
62 ready
63 ready
64 ready
65 ready
66 ready
67 ready
68 ready
69 ready
70 ready
71 ready
72 ready
73 ready
74 ready
75 ready
76 ready
77 ready
78 ready
79 ready
80 ready
81 ready
82 ready
83 ready
84 ready
85 ready
86 ready
87 ready
88 ready
89 ready
90 ready
91 ready
92 ready
93 ready
94 ready
95 ready
96 ready
97 ready
98 ready
99 ready
0 ok 0.04853343963623047 >> 2
1 ok 0.05950188636779785 >> 3
2 ok 0.07048273086547852 >> 4
3 ok 0.08148550987243652 >> 5
4 ok 0.09250092506408691 >> 6
5 ok 0.10926294326782227 >> 7
6 ok 0.12490129470825195 >> 8
7 ok 0.14052605628967285 >> 9
8 ok 0.15615200996398926 >> 10
9 ok 0.17178106307983398 >> 11
10 ok 0.1830887794494629 >> 12
11 ok 0.20685911178588867 >> 13
12 ok 0.2224743366241455 >> 14
13 ok 0.23811078071594238 >> 15
14 ok 0.2537074089050293 >> 16
15 ok 0.2693307399749756 >> 17
16 ok 0.28498411178588867 >> 18
17 ok 0.30058836936950684 >> 19
18 ok 0.3162100315093994 >> 20
19 ok 0.3318345546722412 >> 21
20 ok 0.3474588394165039 >> 22
21 ok 0.36308765411376953 >> 23
22 ok 0.3787403106689453 >> 24
23 ok 0.3943662643432617 >> 25
24 ok 0.40999341011047363 >> 26
25 ok 0.42558979988098145 >> 27
26 ok 0.44124603271484375 >> 28
27 ok 0.45687246322631836 >> 29
28 ok 0.47248005867004395 >> 30
29 ok 0.4881246089935303 >> 31
30 ok 0.5037407875061035 >> 32
31 ok 0.5193655490875244 >> 33
32 ok 0.5350019931793213 >> 34
33 ok 0.5506284236907959 >> 35
34 ok 0.5662543773651123 >> 36
35 ok 0.581881046295166 >> 37
36 ok 0.5974876880645752 >> 38
37 ok 0.6131348609924316 >> 39
38 ok 0.628760576248169 >> 40
39 ok 0.6443860530853271 >> 41
40 ok 0.6600117683410645 >> 42
41 ok 0.6756384372711182 >> 43
42 ok 0.6912641525268555 >> 44
43 ok 0.7025017738342285 >> 45
44 ok 0.7136087417602539 >> 46
45 ok 0.7304520606994629 >> 47
46 ok 0.7460896968841553 >> 48
47 ok 0.7617146968841553 >> 49
48 ok 0.7773408889770508 >> 50
49 ok 0.7929461002349854 >> 51
50 ok 0.8085935115814209 >> 52
51 ok 0.8242194652557373 >> 53
52 ok 0.835425853729248 >> 54
53 ok 0.8460292816162109 >> 55
54 ok 0.8570287227630615 >> 56
55 ok 0.8680441379547119 >> 57
56 ok 0.8790807723999023 >> 58
57 ok 0.8900876045227051 >> 59
58 ok 0.9068508148193359 >> 60
59 ok 0.9183416366577148 >> 61
60 ok 0.9293229579925537 >> 62
61 ok 0.9540541172027588 >> 63
62 ok 0.965238094329834 >> 64
63 ok 0.9762489795684814 >> 65
64 ok 0.9970529079437256 >> 66
65 ok 0.012664318084716797 >> 67
66 ok 0.028286218643188477 >> 68
67 ok 0.04391288757324219 >> 69
68 ok 0.05520915985107422 >> 70
69 ok 0.0662069320678711 >> 71
70 ok 0.07726216316223145 >> 72
71 ok 0.08829855918884277 >> 73
72 ok 0.10806035995483398 >> 74
73 ok 0.1236879825592041 >> 75
74 ok 0.1393144130706787 >> 76
75 ok 0.15494060516357422 >> 77
76 ok 0.17056679725646973 >> 78
77 ok 0.1862044334411621 >> 79
78 ok 0.2018122673034668 >> 80
79 ok 0.21296286582946777 >> 81
80 ok 0.23275494575500488 >> 82
81 ok 0.24839282035827637 >> 83
82 ok 0.26398777961730957 >> 84
83 ok 0.27964138984680176 >> 85
84 ok 0.2952687740325928 >> 86
85 ok 0.3108956813812256 >> 87
86 ok 0.3265206813812256 >> 88
87 ok 0.3371133804321289 >> 89
88 ok 0.3481626510620117 >> 90
89 ok 0.3649563789367676 >> 91
90 ok 0.3805820941925049 >> 92
91 ok 0.3962380886077881 >> 93
92 ok 0.4118645191192627 >> 94
93 ok 0.4274616241455078 >> 95
94 ok 0.4431171417236328 >> 96
95 ok 0.4587433338165283 >> 97
96 ok 0.4743692874908447 >> 98
97 ok 0.48996663093566895 >> 99
98 ok 0.5056219100952148 >> 100
99 ok 0.52121901512146 >> 101

Process finished with exit code 0


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值