python thread模块_Python线程模块threading

importrandom,timeimportthreadingfrom threading importConditionclassProducer(threading.Thread):"""Produces random integers to a list"""

def __init__(self, integers, condition):"""Constructor.

@param integers list of integers

@param condition condition synchronization object"""threading.Thread.__init__(self)

self.integers=integers

self.condition=conditionprint("threading-1 created")defrun(self):"""Thread run method. Append random integers to the integers list

at random time."""

whileTrue:

integer= random.randint(0, 256)

self.condition.acquire()print('condition acquired by %s' %self.name)

self.integers.append(integer)print ('%d appended to list by %s' %(integer, self.name))print ('condition notified by %s' %self.name)

self.condition.notify()print( 'condition released by %s' %self.name)

self.condition.release()

time.sleep(1)classConsumer(threading.Thread):"""Consumes random integers from a list"""

def __init__(self, integers, condition):"""Constructor.

@param integers list of integers

@param condition condition synchronization object"""threading.Thread.__init__(self)

self.integers=integers

self.condition=conditionprint("threading-2 created")defrun(self):"""Thread run method. Consumes integers from list"""

whileTrue:print("thread2 befor acquire")

self.condition.acquire()print( 'condition acquired by %s' %self.name)whileTrue:ifself.integers:

integer=self.integers.pop()print( '%d popped from list by %s' %(integer, self.name))break

print ('condition wait by %s' %self.name)

self.condition.wait()print("thread2 after wait")print ('condition released by %s' %self.name)

self.condition.release()defmain():

integers=[]

condition=threading.Condition()

t1=Producer(integers, condition)

t2=Consumer(integers, condition)

t1.start()print("t1 started")

t2.start()print("t2 started")

time.sleep(3)for i in range(10):print("fuck")

t1.join()

t2.join()if __name__ == '__main__':

main()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值