python自学计划-线程锁-20

2018-12-13  本文已影响2人  你缺少想象力

使用线程锁的方式很简单(可能是我不了解其他方式)
需要用到threading.Lock()
然后调用相关方法:

lock = threading.Lock()
lock.acquire() # 得到锁
# 中间操作
lock.release() # 释放锁

例子:

import threading
import time

global counter
counter = 0

lock = threading.Lock()


class myThread(threading.Thread):

    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):
        global counter
        while True:
            if counter >= 15:
                break
            lock.acquire()
            counter += 1
            lock.release()
            print("线程名:%s,计数器:%s" % (self.name, counter))

            time.sleep(0.1)


thread1 = myThread()
thread2 = myThread()
thread1.start()
thread2.start()

运行结果:

线程名:Thread-1,计数器:1
线程名:Thread-2,计数器:2
线程名:Thread-2,计数器:3
线程名:Thread-1,计数器:4
线程名:Thread-2,计数器:5
线程名:Thread-1,计数器:6
线程名:Thread-1,计数器:7
线程名:Thread-2,计数器:8
线程名:Thread-1,计数器:9
线程名:Thread-2,计数器:10
线程名:Thread-1,计数器:11
线程名:Thread-2,计数器:12
线程名:Thread-1,计数器:13
线程名:Thread-2,计数器:14
线程名:Thread-1,计数器:15
上一篇 下一篇

猜你喜欢

热点阅读