zoukankan      html  css  js  c++  java
  • 线程锁和进程间的通信

    模拟死锁  (解死锁两种方法 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()
     
  • 相关阅读:
    STL_算法_05_集合算法
    STL_算法_04_算术和生成算法
    STL_算法_03_拷贝和替换算法
    STL_算法_02_排序算法
    STL_算法_01_查找算法
    STL_容器使用时机
    STL_容器共通能力
    Qt5_选择文件对话框
    Qt5_当前exe所在路径
    Java 静态代理和动态代理
  • 原文地址:https://www.cnblogs.com/sunzhiqi/p/10064887.html
Copyright © 2011-2022 走看看