线程锁和进程间的通信

模拟死锁  (解死锁两种方法 timeout 超时  互斥锁)   多线程是为了提高效率
多线程中的一个线程卡死,会影响其他线程的运行。
import threading
import time
def work1(num):
#加定时器锁,增加锁超时
lock.acquire(timeout=1)
#time.sleep(1)
lock1.acquire(timeout=1) #要timeout就不需要解锁
# global sum
# for i in range(num):
# sum+=i
# lock1.release()
# lock.release()
 
def work2(num):
lock1.acquire(timeout=1)
#time.sleep(1)
lock.acquire(timeout=1)
# global sum
# for i in range(num):
# sum += i
# lock1.release()
# lock.release()
#建立锁对象,复现死锁
lock=threading.Lock()
lock1=threading.Lock()
 
t1=threading.Thread(target=work1,args=(10000000000,))
t1.start()
 
t2=threading.Thread(target=work2,args=(10000000000,))
t2.start()
 
print(sum)
 
 
进程间的通信 Queue
 
 
#进程池
import multiprocessing
import os,time
def work1(msg):
    print("%s开始,进程号是%s"%(msg,os.getpid()))
    time.sleep(1)
if __name__ == '__main__':
    po=multiprocessing.Pool(2)
    for i in range(5):
    po.apply_async(work1,(i,))
 
    po.close()
    po.join()
 
posted @ 2018-12-04 16:24  寒风孤影,江湖故人  阅读(292)  评论(0编辑  收藏  举报