python2线程_python多线程2线程应用

上代码。。

'''

1、经典的生产者,消费者问题

2、Lock和RLock差不多:Lock会死锁,RLock不会,具体google

'''

#coding:gbk

'''

Created on 2013-1-4

@author: Jimmy

@note: 1、一个简单的创建线程例子,外加生产者消费者问题

2、线程同步初步

'''

import log

import time

import threading

phone = 0

class Mthread(threading.Thread): #Mthread类继承自threading.Thread类

def __init__(self, ThreadName):

#重写__init__方法的时候要记得调用基类的__init__方法

threading.Thread.__init__(self,name = ThreadName)

def run(self): #重写run()方法,把自己的线程函数的代码放到这里

#func

pass

#生产者

class Producer(Mthread):

def __init__(self, lock, ProducerName = "Producer"):

Mthread.__init__(self, ProducerName)

self.lock = lock

pass

def run(self):

global phone

while 1:

self.lock.acquire()

phone += 1

print "生产一个"

print "Produce Now: " + self.getName() + " phoneNum = " + str(phone)

self.lock.release()

time.sleep(5)

#消费者

class Consumer(Mthread):

def __init__(self, lock, ConsumerName = "Consumer"):

Mthread.__init__(self, ConsumerName)

self.lock = lock

pass

def run(self):

global phone

while 1:

self.lock.acquire()

if phone < 1:

print "没有电话了,sleep 1s"

self.lock.release()

time.sleep(1)

else:

phone -= 1

print "消费一个,sleep 3s"

print "Consume Now: " + self.getName() + " phoneNum = " + str(phone)

self.lock.release()

time.sleep(3)

#同步的操作

class sync():

def __init__(self):

pass

if __name__ == "__main__":

#===========================================================================

# Mlog = log.logger()

# Mlog.log("Create Thread Method")

#===========================================================================

lock = threading.RLock()

#2个生产者

p0 = Producer(lock,"p0").start()

p1 = Producer(lock,"p1").start()

p2 = Producer(lock,"p2").start()

#3个消费者

c0 = Consumer(lock,"c0").start()

c1 = Consumer(lock,"c1").start()

c2 = Consumer(lock,"c2").start()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值