zoukankan      html  css  js  c++  java
  • 通过类创建子线程&同步锁

    一、通过类创建子线程

     1 import threading
     2 class MyThread(threading.Thread):
     3     def __init__(self,num):
     4         threading.Thread.__init__(self)
     5         self.num = num
     6     def run(self):
     7         print('running on number %s' %self.num)
     8 if __name__ == '__main__':
     9     t1 = MyThread(1)
    10     t2 = MyThread(2)
    11     t1.start()
    12     t2.start()

    二、同步锁

    import time
    import threading
    def cal():
        global num
        r.acquire()      #上锁
        temp = num
        time.sleep(0.001)
        num = temp-1
        r.release()      #开锁
    1.被上锁的代码不执行完,GIL锁不释放,线程不切换
    2.开锁后,多线程正常运行
     1 num = 100
     2 thread_list = []
     3 r = threading.Lock()    #创建锁
     4 for i in range(100):
     5     t = threading.Thread(target=cal)
     6     t.start()
     7     thread_list.append(t)
     8 
     9 for t in thread_list:    #等待所有子线程执行完毕
    10     t.join()
    11 
    12 print(num)
     
  • 相关阅读:
    理财-4
    “大锅”遇险记
    今日份灵感开发
    持续集成简介
    redis clusert分布式集群
    redis 哨兵
    redis 主从复制
    Redis新特性ACL安全策略
    redis 快照持久化RDB和AOF
    redis 基础常用命令
  • 原文地址:https://www.cnblogs.com/Finance-IT-gao/p/10601331.html
Copyright © 2011-2022 走看看