initial
This commit is contained in:
63
threaded.attic
Normal file
63
threaded.attic
Normal file
@ -0,0 +1,63 @@
|
||||
class DetCalcThread(threading.Thread):
|
||||
def __init__(self, name, m):
|
||||
threading.Thread.__init__(self, name = name)
|
||||
self.m = m
|
||||
self.setDaemon(True)
|
||||
print("Thread %s created" % self.name)
|
||||
|
||||
def run(self):
|
||||
print("Thread %s started" % self.name)
|
||||
self.d = self.det(self.m)
|
||||
print("Thread %s done" % self.name)
|
||||
|
||||
def getValue(self):
|
||||
return self.d
|
||||
|
||||
def det(self, m):
|
||||
print("Start building permutations for thread %s" % self.name)
|
||||
indexListI = range(1, len(m)+1)
|
||||
indexListJ = s_permutations(indexListI)
|
||||
print("Permutations for thread %s ready" % self.name)
|
||||
|
||||
summ = 0
|
||||
for indexJ in indexListJ:
|
||||
sign = indexJ[1]
|
||||
prod = sign
|
||||
for indexI in indexListI:
|
||||
prod *= m[indexI-1][indexJ[0][indexI-1]-1]
|
||||
print("Thread %s stepped" % self.name)
|
||||
summ += prod
|
||||
|
||||
return summ
|
||||
|
||||
|
||||
|
||||
def threadedSolve(g):
|
||||
coeffMatrix = g[:-1]
|
||||
coeffThread = DetCalcThread('coeff', coeffMatrix)
|
||||
coeffThread.start()
|
||||
|
||||
order = len(g) - 1
|
||||
varThreads = []
|
||||
for i in range(order):
|
||||
varMatrix = []
|
||||
for j in range(order):
|
||||
if (i == j):
|
||||
varMatrix.append(g[order])
|
||||
else:
|
||||
varMatrix.append(g[j])
|
||||
detCalcThread = DetCalcThread("%i" % i, varMatrix)
|
||||
detCalcThread.start()
|
||||
varThreads.append(detCalcThread)
|
||||
|
||||
coeffThread.join()
|
||||
coeffDet = coeffThread.getValue()
|
||||
|
||||
unknowns = []
|
||||
for varThread in varThreads:
|
||||
varThread.join()
|
||||
varDet = varThread.getValue()
|
||||
var = varDet / coeffDet
|
||||
unknowns.append(var)
|
||||
|
||||
return unknowns
|
Reference in New Issue
Block a user