1、开启两个线程分别执行函数
import time
import threading
def sing():
for i in range(5): # 子线程
print("----正在唱------")
time.sleep(1)
def dance():
for i in range(5): # 子线程
print("----正在跳------")
time.sleep(1)
# main函数里是主线程,各个函数执行子线程,子线程执行,主线程等待
def main():
t1 = threading.Thread(target = sing)
t2 = threading.Thread(target = dance)
t1.start()
t2.start()
#主线程进行等待
if __name__ == "__main__":
main()
2、开启多个线程共享同一个变量并且进行开锁和解锁
# 两个线程同时操作全局变量的问题--资源竞争
# 同步:互斥锁,避免死锁:添加超过时间
import time
import threading
"""
lock()创建没上锁的互斥锁
acquire()上锁
release()解锁
"""
g_num = 0
def test1(num):
global g_num
for i in range(num):
mutex.acquire()
g_num += 1
mutex.release()
print("--------in test1 g_num=%d-------" % g_num)
def test2(num):
global g_num
for i in range(num):
mutex.acquire()
g_num += 1
mutex.release()
print("--------in test2 g_num=%d-------" % g_num)
mutex = threading.Lock()
def main():
#target指定将来 这个线程去哪个函数执行代码
#args指定将来调用函数时 传递什么参数进去
#arg关键字可以向函数里传入参数(元组)
#下面两个分别循环4和1000000次
t1 = threading.Thread(target = test1, args=(4,))
t2 = threading.Thread(target = test2, args=(1000000,))
t1.start()
t2.start()
time.sleep(4)
print("--------in main Thread g_num=%d-------" % g_num)
if __name__ == "__main__":
main()