import threading
import time
gj=0
lock=threading.Lock()
def g_num(j=0):
global gj
if j==1:
if lock.acquire():
gj+=1
lock.release()
class TestThread(threading.Thread):
def __init__(self, thread_num, ipaddr):
super(TestThread, self).__init__()
self.thread_num = thread_num
self.ipaddr=ipaddr
self.stopped = False
#self.timeout = timeout
def run(self):
n=0
while not self.stopped:
print "%s : %s - %s"%(self.thread_num,n,self.ipaddr)
if n==2:
g_num(1)
n=0
n+=1
time.sleep(1)
def stop(self):
self.stopped = True
def restart(self):
self.stopped = False
def isStopped(self):
return self.stopped
def t_func(thread_num):
n=0
while 1:
print "%s : %s"%(thread_num,n)
n+=1
if n==2:
#print "exec g_num"
g_num(1)
time.sleep(1)
#thread=TestThread(1)
#thread.start()
#thread.start()
#time.sleep(5)
#thread.stop()
tn=[1,2,3,4,5]
thread_list=[]
ip=('IP-A','IP-B')
ip_num=0
def ip_change():
global ip_num
if(ip_num<len(ip)):
n=ip_num
else:
ip_num=0
n=ip_num
ip_num+=1
return ip[n]
ipaddr=ip_change()
for i in tn:
thread_list.append(TestThread(i,ipaddr))
n=0
for i in thread_list:
n+=1
print n
i.setDaemon(True)
i.start()
while 1:
print "gj num is :%s"%gj
if gj>5:
ipaddr=ip_change()
print "gj>0 %s: %s"%(gj,ipaddr)
gj=0
for i in thread_list:
i.stop()
i.join(1)
#print "isDaemon %s"%i.isDaemon()
#print "isAlive %s"%i.isAlive()
thread_list=[]
for i in tn:
thread_list.append(TestThread(i,ipaddr))
for i in thread_list:
i.setDaemon(True)
i.start()
else:
g_num()
time.sleep(1)
#print('Main thread Wainting')
#time.sleep(2)
#print thread.isStopped()
#thread.stop()
#print thread.isStopped()
#thread.join()
python 多線程http失敗切換功能
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.