python3 加线程锁对公共资源进行修改

python

code

# 不加锁:未加锁部分并发执行,加锁部分串行执行,速度慢,数据安全

from threading import current_thread, Thread, Lock

import os, time

n = 100

def task():

# 未加锁的代码并发运行

time.sleep(3)

print('%s start to run' % current_thread().getName())

global n

# 加锁的代码串行运行

lock.acquire()

temp = n

time.sleep(0.5)

n = temp - 1

lock.release()

if __name__ == '__main__':

lock = Lock()

threads = []

start_time = time.time()

for i in range(5):

t = Thread(target=task)

threads.append(t)

t.start()

for t in threads:

t.join()

stop_time = time.time()

print('主:%s n:%s' % (stop_time - start_time, n))

outputs

macname@MacdeMacBook-Pro py % python3" title="python3">python3 cccccc.py

Thread-1 start to run

Thread-2 start to run

Thread-5 start to run

Thread-4 start to run

Thread-3 start to run

主:5.518028020858765 n:95

macname@MacdeMacBook-Pro py %

 

 

 

 

 

 

 

 

 

 

 

以上是 python3 加线程锁对公共资源进行修改 的全部内容, 来源链接: utcz.com/z/386866.html

回到顶部