zoukankan      html  css  js  c++  java
  • [Python_5] Python 线程


    0. 说明

      Python 线程笔记


     1. 低级 API

    # -*-coding:utf-8-*-
    """
        线程
    """
    
    """
        低级 API
    """
    import time
    import _thread
    
    
    def sayHello(str):
        print(str)
    
    try:
        _thread.start_new_thread(sayHello, ("hello world",))
    finally:
        # 休眠的秒数
        time.sleep(5)

    2. 高级 API

      玩家线程

    """
        高级 API
    """
    
    import threading
    
    
    # 玩家类
    class Player(threading.Thread):
        def run(self):
            print("%s 出发了" % (self.name))
            time.sleep(self.time)
            print("%s 到了" % (self.name))
    
        def __init__(self, name, time):
            threading.Thread.__init__(self)
            self.name = name
            self.time = time
    
    
    p1 = Player("p1", 3)
    p2 = Player("p2", 1)
    p3 = Player("p3", 2)
    p4 = Player("p4", 4)
    
    p1.start()
    p2.start()
    p3.start()
    p4.start()
    
    p1.join()
    p2.join()
    p3.join()
    p4.join()
    print("开局!!")

      售票问题解决多线程安全问题

    import threading
    
    tickets = 100
    
    # 取票方法,保证线程安全性
    lock = threading.Lock()
    
    
    def getTicket():
        global tickets
        lock.acquire()
        tmp = tickets
        if (tickets > 0):
            tickets -= 1
            lock.release()
            return tmp
        else:
            lock.release()
            return -1
    
    
    # 售票员
    class Saler(threading.Thread):
        def run(self):
            while (True):
                tmp = getTicket()
                if tmp != -1:
                    print("%s : %d
    " % (self.name, tmp), end="")
                else:
                    break;
    
        def __init__(self, name):
            threading.Thread.__init__(self)
            self.name = name
    
    
    s2 = Saler("s2")
    s1 = Saler("s1")
    s1.start()
    s2.start()
    s1.join()
    s2.join()
    
    print("over")

  • 相关阅读:
    分布式事务的MQ实现
    zipkin 介绍入门
    线程5问?
    微服务分布式系统架构,转载,备份
    微服务,分布式架构
    史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!
    Tomcat优化
    windows 下安装kafka
    经典台词
    分布式锁3种实现
  • 原文地址:https://www.cnblogs.com/share23/p/9822214.html
Copyright © 2011-2022 走看看