From: R D. <rd...@cr...> - 2002-01-17 00:46:00
|
Sorry, I sent the wrong error message. Here is the correct one: I am getting the following namerror when I try to run the code below: Traceback (innermost last): File "mtcxjdbcTester.py", line 31, in run NameError: c Traceback (innermost last): File "mtcxjdbcTester.py", line 76, in run AttributeError: 'int' object has no attribute 'incr' Thanks for any insight you might have, Raj Here is the jython code: import sys,os,threading from java.lang import Thread from time import sleep, time from java.sql import DriverManager from time import time #from org.gjt.mm.mysql import Driver from com.cxa.jdbc import Driver from java.lang.Class import forName class keepCount: def __init__(self): self.reccount = 0 def incr(self,delta): self.reccount = self.reccount + delta def getreccount(self): return self.reccount class doStats(Thread): def __init__(self, id, pollint,k,c,iter): self.id = id self.c = c print c self.iter = iter self.pollint = pollint self.k = k print '%d'%(k.getreccount()) self.tstart = time() print "Starting doStats, thread #%d"%(self.id) self.start() def run(self): self.id = id self.c = c print c self.iter = iter self.pollint = pollint self.k = k rCount = 0 while (rCount < self.iter*self.c): sleep(pollint) lock.acquire() rCount=k.getreccount() lock.release() print '%d records fetched in %d ms'%(rCount,self.tstart-time()) class getRows(Thread): def __init__(self, id, con,iter,k): self.id = id self.iter = iter self.con = con self.k = k # print "Starting thread #%d"%(self.id) self.start() def run(self): self.iter = iter self.file = open("thread%d.out"%(self.id), "w") self.start = time() self.k = k pstmt = self.con.prepareStatement("select prodid,desc,cost from bea.prodroot where prodid = ?") print >>self.file,"###############" print >>self.file,"Time to prepare: %4.4f"%(1000*(time() - self.start)) for loopc in range(iter): self.start = time() keyv = 10000+self.id pstmt.setString(1,str(keyv)) rs = pstmt.executeQuery() print >>self.file,"Time to execute: %4.4f"%(1000*(time() - self.start)) self.start = time() nrec = 0 while rs.next() : print >>self.file,"Loop %d %s %s %s"%(loopc,rs.getString(1),rs.getString(2),rs.getString(3)) nrec = nrec + 1 rs.close() print >>self.file,"Time to get %d records: %4.4f"%(nrec, 1000*(time() - self.start)) lock.acquire() k.incr(nrec) lock.release() self.file.close() server, db,usr, passwd = "RAJDATTA", "test","rdatta", "rdatta" driver = "com.cxa.jdbc.Driver" #driver = "org.gjt.mm.mysql.Driver" forName(driver).newInstance() #url = "jdbc:mysql://%s/%s?user=%s&password=%s" % (server, db, usr, passwd) url = "jdbc:cxa:CXARAJ:tcp/P39D/8098" threadList = [] conList= [] connCount = int(sys.argv[1]) iter = int(sys.argv[2]) if (len(sys.argv) > 3): pollint = int(sys.argv[3]) else: pollint = 30 start = time() for i in xrange(0,connCount): conList.insert(i,DriverManager.getConnection(url)) print 'Total time to create %d connections: %.4f ms' % (connCount,1000*(time()-start)) #del threadList #threadList = [] lock = threading.Lock() start = time() k=0 kObj = keepCount(); print 'reccount %d'%(kObj.getreccount()) for j in range(connCount): k=k+1 threadList.append(getRows(k,conList[j],iter,kObj)) sleep(0.1) print "Total threads running: ",k threadList.append(doStats(k+1,pollint,kObj,connCount,iter)) for tTh in threadList: tTh.join() elapsed = time() - start print 'Total time to run %d queries: %.4f ms' % (k*iter,1000*elapsed) Thanks Raj Datta Professional Services Direct : 408-530-4932 CrossAccess Corp Cell : 408-316-5473 2900 Gordon Ave #100 Fax : 408-735-0328 Santa Clara CA 95051 Email : rd...@cr... |