ich komm immer noch mit den threads nicht so richtig klar - folgendes script stürzt ab, und zwar immer in der fünften Runde des Threads, aber anscheinend nur, wenn ich es von IDLE aus in der Python-shell laufen lasse. Wenn ich es in der dos-box starte, scheint es ok zu laufen.
Würde es aber na klar auch gern in der Python-shell zum laufen kriegen, weil da das debuggen einfacher ist...
PS ich weiss gar nicht ob 'stürzt ab' ier richtig ist - es gibt keine Exception oder so, es ist einfach völlig tot.
Code: Alles auswählen
import thread
import random
import time
class database:
def __init__(self, username=0, password=0):
self.threadLock = thread.allocate_lock()
self.markets = list()
def getMarkets(self):
for i in range(1,25):
DB_newMarket = market(self.threadLock)
DB_newMarket.marketId = random.randint(10000,99999)
DB_newMarket.marketStatus = "OPEN"
self.markets.append(DB_newMarket)
class market:
def __init__(self, threadLock):
self.threadLock = threadLock
self.marketId = int()
self.marketStatus = str()
def marketUpdate(self):
self.marketId = random.randint(10000, 99999)
self.marketStatus = "OPEN"
return self.marketStatus != "CLOSED"
def marketThread(self, timer):
def _mthread(timer):
isOpen = True
while isOpen:
self.threadLock.acquire()
isClosed = self.marketUpdate()
print "marketUpdate returned,", self.marketId
self.threadLock.release()
time.sleep(timer)
print "thread finished"
thread.start_new_thread(_mthread, (timer, ))
a = database()
a.getMarkets()
a.markets[0].marketThread(5)
while 1==1:
time.sleep(1)
a.markets[0].threadLock.acquire()
print "tick"
a.markets[0].threadLock.release()