• 线程锁和进程间的通信


    模拟死锁  (解死锁两种方法 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()
     
  • 相关阅读:
    C++ Primer 笔记——语句
    C++ Primer 笔记——const 限定符
    C++ Primer 笔记——变量
    C++ Primer 笔记——函数
    C++ Primer 笔记——基本内置类型
    图的遍历算法:DFS、BFS
    python数据结构之图论
    下载文件的协议:HTTP、FTP、P2P
    HTTPS协议
    HTTP协议
  • 原文地址:https://www.cnblogs.com/sunzhiqi/p/10064887.html
Copyright © 2020-2023  润新知