![在这里插入图片描述](https://img-blog.csdnimg.cn/20200214225601831.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2dvbmdyYW5y,size_16,color_FFFFFF,t_70
import threading
import time
def f(i):
time.sleep(0.1)
print(i)
def main():
for i in range(1,10):
t = threading.Thread(target = f, args=(i,))
t.setDaemon(True)
t.start()
main()
print("exit\n")
上面这个多线程的代码如下:
import threading
import time
def f(i):
time.sleep(0.1)
print(i)
def main():
threads=[]
for i in range(1,10):
t = threading.Thread(target = f, args=(i,))
t.setDaemon(True)
t.start()
threads.append(t)
for th in threads:
th.join()
main()
print("exit\n")
锁
import threading
## 按理说程序应当
count = 0
def f(i):
global count
for _ in range(1000000):
count +=1
print("%s" % threading.currentThread().getName(),count)
ls = []
for i in range(3):
t = threading.Thread(target=f,args=(i,))
ls.append(t)
t.start()
for th in ls:
th.join()
above output:
指令锁
above code
import threading
import time
lock = threading.Lock()
count = 0
def f(i):
global count
if(lock.acquire()):
print("%saleardy acquire" % threading.currentThread().getName())
for _ in range(1000000):
count += 1
lock.release()
print("%sreleased lock" % threading.currentThread().getName())
if __name__ == "__main__":
start = time.time()
ls = []
for i in range(3):
t = threading.Thread(target = f, args = (i,))
ls.append(t)
t.start()
for th in ls:
th.join()