<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->
<style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<font face="Arial, sans-serif" size="2">
<div>Hello,</div>
<div> </div>
<div>I'm a newbie to Python.  I wrote a Python script which connect to my Geodatabase (ESRI ArcGIS File Geodatabase), retrieves the records, then proceeds to evaluate which ones are duplicated.  I do this using lists.  Someone suggested I use arrays instead. 
Below is the content of my script.  Anyone have any ideas on how an array can improve performance?  Right now the script takes 2.5 minutes to run on a recordset of 79k+ records:</div>
<div> </div>
<div><font color="#0000FF">from __future__ import division</font></div>
<div><font color="#0000FF">import sys, string, os, arcgisscripting, time</font></div>
<div><font color="#0000FF">from time import localtime, strftime</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">def writeMessage(myMsg):</font></div>
<div><font color="#0000FF">    print myMsg</font></div>
<div><font color="#0000FF">    global log</font></div>
<div><font color="#0000FF">    log = open(logFile, 'a')</font></div>
<div><font color="#0000FF">    log.write(myMsg + "\n")</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">logFile = "c:\\temp\\" + str(strftime("%Y%m%d %H%M%S", localtime())) + ".log"</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">writeMessage(' ')</font></div>
<div><font color="#0000FF">writeMessage(str(strftime("%H:%M:%S", localtime())) + ' begin unique values test') </font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF"># Create the Geoprocessor object</font></div>
<div><font color="#0000FF">gp = arcgisscripting.create(9.3)</font></div>
<div><font color="#0000FF">oid_list = []</font></div>
<div><font color="#0000FF">dup_list = []</font></div>
<div><font color="#0000FF">tmp_list = []</font></div>
<div><font color="#0000FF">myWrkspc = "c:\\temp\\TVM Geodatabase GDIschema v6.0.2 PilotData.gdb"</font></div>
<div><font color="#0000FF">myFtrCls = "<a href="\\Landbase\\T_GroundContour"><u>\\Landbase\\T_GroundContour</u></a>"</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">writeMessage(' ')</font></div>
<div><font color="#0000FF">writeMessage('gdb: ' + myWrkspc)</font></div>
<div><font color="#0000FF">writeMessage('ftr: ' + myFtrCls)</font></div>
<div><font color="#0000FF">writeMessage(' ')</font></div>
<div><font color="#0000FF">writeMessage(str(strftime("%H:%M:%S", localtime())) + ' retrieving recordset...')</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">rows = gp.SearchCursor(myWrkspc + myFtrCls,"","","GDI_OID")</font></div>
<div><font color="#0000FF">row = rows.Next()</font></div>
<div><font color="#0000FF">writeMessage(' ')</font></div>
<div><font color="#0000FF">writeMessage(str(strftime("%H:%M:%S", localtime())) + ' processing recordset...')</font></div>
<div><font color="#0000FF">while row:</font></div>
<div><font color="#0000FF">    if row.GDI_OID in oid_list:</font></div>
<div><font color="#0000FF">        tmp_list.append(row.GDI_OID)</font></div>
<div><font color="#0000FF">    oid_list.append(row.GDI_OID)</font></div>
<div><font color="#0000FF">    row = rows.Next()</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">writeMessage(' ')</font></div>
<div><font color="#0000FF">writeMessage(str(strftime("%H:%M:%S", localtime())) + ' generating statistics...')</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">dup_count = len(tmp_list)</font></div>
<div><font color="#0000FF">tmp_list = list(set(tmp_list))</font></div>
<div><font color="#0000FF">tmp_list.sort()</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">for oid in tmp_list:</font></div>
<div><font color="#0000FF">    a = str(oid) + '     '</font></div>
<div><font color="#0000FF">    while len(a) < 20:</font></div>
<div><font color="#0000FF">        a = a + ' '</font></div>
<div><font color="#0000FF">    dup_list.append(a + '(' + str(oid_list.count(oid)) + ')')</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">for dup in dup_list:</font></div>
<div><font color="#0000FF">    writeMessage(dup)</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">writeMessage(' ')</font></div>
<div><font color="#0000FF">writeMessage('records    : ' + str(len(oid_list)))</font></div>
<div><font color="#0000FF">writeMessage('duplicates : ' + str(dup_count))</font></div>
<div><font color="#0000FF">writeMessage('% errors   : ' + str(round(dup_count / len(oid_list), 4)))</font></div>
<div><font color="#0000FF">writeMessage(' ')</font></div>
<div><font color="#0000FF">writeMessage(str(strftime("%H:%M:%S", localtime())) + ' unique values test complete')</font></div>
<div><font color="#0000FF"> </font></div>
<div><font color="#0000FF">log.close()</font></div>
<div><font color="#0000FF">del dup, dup_count, dup_list, gp, log, logFile, myFtrCls, myWrkspc</font></div>
<div><font color="#0000FF">del oid, oid_list, row, rows, tmp_list</font></div>
<div><font color="#0000FF">exit()</font></div>
<div> </div>
<div> </div>
<div>Thanks!</div>
<div> </div>
<div>Paul J. Scipione</div>
<div>GIS Database Administrator</div>
<div>work: 602-371-7091</div>
<div>cell: 480-980-4721</div>
<div> </div>
<div> </div>
</font>

<P>Email Firewall made the following annotations
<br/>---------------------------------------------------------------------<br/>--- NOTICE ---
<br>This message is for the designated recipient only and may contain confidential, privileged or proprietary information.  If you have received it in error, please notify the sender immediately and delete the original and any copy or printout.  Unintended recipients are prohibited from making any other use of this e-mail.  Although we have taken reasonable precautions to ensure no viruses are present in this e-mail, we accept no liability for any loss or damage arising from the use of this e-mail or attachments, or for any delay or errors or omissions in the contents which result from e-mail transmission.
<br>---------------------------------------------------------------------<br/>
</P></body>
</html>