python-简单线程

本文通过三节内容介绍了Python中的多线程编程,包括基础的线程同步、使用Lock防止数据混乱,以及生产者消费者模型的实现。通过Queue队列实现了线程间的通信,确保生产者生产一个数据后,消费者消耗完再生产下一个,展示了线程同步的重要性和实际应用。
摘要由CSDN通过智能技术生成
import threading
import time
import queue
#第一节
# def run(threadname,n):
#     lock.acquire()
#     while n>=0:
#         print(threadname+":"+str(n))
#         time.sleep(1)
#         n-=1
#     lock.release()
# Thread1=threading.Thread(target=run,args=("Thread_1",5,))
# Thread2=threading.Thread(target=run,args=("Thread_2",5,))
# Thread3=threading.Thread(target=run,args=("Thread_3",5,))
# Thread1.start()
# Thread2.start()
# Thread3.start()
# Thread1.join()
# Thread2.join()
# Thread3.join()
#

#第二节
#多个线程执行一个操作
# lock=threading.Lock()#上锁,上锁防止多个线程操作,造成数据混乱!
# class myThread(threading.Thread):
#     def __init__(self):
#         threading.Thread.__init__(self)
#         name=threading.Thread.getName(self)
#         self.name=name
#         self.count=5
#
#     def run(self):
#         lock.acquire()
#         while self.count >= 0:
#             print(self.name + ":" + str(self.count))
#             time.sleep(1)
#             self.count -= 1
#         lock.release()
# # 创建新线程
# thread1 = myThread()
# thread2 = myThread()
# thread1.start()#启动线程
# thread2.start()
# thread1.join()#阻塞的作用,放在不同线程启动后的位置有不同德效果!比如放在thread1.start()后面,在放thread2.start(),需要等待thread1执行完后才会执行thread2
# thread2.join()
# print("退出主线程")

#第三节
#生产者和消费者的模式,生产完一个数据,等消费者消费完在生产第二个
#创建队列
qu=queue.Queue()
lock=threading.Lock()#上锁,上锁防止多个线程操作,造成数据混乱!上锁后,需要等待解锁才能操作
class mythrade_01(object):
    def __init__(self):
        self.count=10
    #生产者
    def producer(self):
        while self.count>=0:
            lock.acquire()#上锁
            print("producer:",self.count)
            qu.put(self.count)#往队列里面传参
            # time.sleep(1)
            self.count-=1


    #消费者的消费
    def consumer(self):

        while self.count>=0:
            print("consumer:",qu.get())#往队列里面拿数据
            # time.sleep(1)
            lock.release()解锁

    #生产者线程
    def producer_thread(self):
        producer_thread=threading.Thread(target=self.producer,args=())
        producer_thread.start()

    #消费者线程
    def consumer_thread(self):
        consumer_thread = threading.Thread(target=self.consumer, args=())
        consumer_thread.start()#启动线程

# thread=mythrade_01()
# thrade1=thread.producer_thread()
# thrade12=thread.consumer_thread()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值