python_多线程
1.多线程的实现与阻塞
import time import threading def fun_yellow(num): for i in range(1,num+1): print('正在拿第:'+str(i)+"个黄苹果,当前时间:"+time.ctime()+'\n') time.sleep(1) def fun_red(num): for i in range(1,num+1): print('正在拿第:'+str(i)+"个红苹果,当前时间:"+time.ctime()+'\n') time.sleep(1) thread_yellow=threading.Thread(target=fun_yellow,args=(5,)) thread_yellow.start() thread_red=threading.Thread(target=fun_red,args=(5,)) thread_red.start() #阻塞主线程 thread_yellow.join() thread_red.join() print('所有任务都已执行完成!')
2.多线程同步:
import time import threading all_num=0 lock=threading.Lock() def fun_li(num): global all_num global lock #加锁 lock.acquire() for i in range(1,num+1): all_num+=1 print('李正在放第:'+str(i)+'个苹果,当前总共有:'+str(all_num)+'个苹果,当前时间:'+time.ctime()+'\n') time.sleep(1) #解锁 lock.release() def fun_zhang(num): global all_num global lock lock.acquire() for i in range(1,num+1): all_num+=1 print('张正在放第:'+str(i)+'个苹果,当前总共有:'+str(all_num)+'个苹果,当前时间:'+time.ctime()+'\n') time.sleep(1) lock.release() thread_yellow=threading.Thread(target=fun_li,args=(5,)) thread_yellow.start() thread_red=threading.Thread(target=fun_zhang,args=(5,)) thread_red.start() #阻塞主线程 thread_yellow.join() thread_red.join() print('所有任务都已执行完成!')