python 多线程问题?

代码如下:

# coding=utf-8
import time
import threading
import os

def doChore():
	print "doChore start"
	time.sleep(0.5)
	print "doChore end"

def booth(tid):
	global i
	global lock
	while True :
		print "tid:",tid,"lock start"
		lock.acquire()
		if i != 0 :
			print "tid:",tid,"得到了第",i,"张票"
			i = i -1
			print "now left tickets:",i
			doChore()
		else :
			print "tid:",tid,"no more tickets!"
			os._exit(0)
    	lock.release()
    	print "tid:",tid,"lock end"
    	doChore()
i = 100
lock = threading.Lock()

for k in xrange(1,5):
	print "第",k,"个线程"
	new_thread = threading.Thread(target=booth,args=(k,))
	new_thread.start()

运行结果如下:

http://img.mukewang.com/583e99810001b91e17481324.jpg

最后线程1并没有release释放锁,请问为什么会这样?

慕粉1714259728
浏览 1147回答 1
1回答

angie

不知道是使用的什么操作系统,我在 MacOS 上面测试没发现问题
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python