Ed Leafe wrote:
...
>       There are probably several other ways to accomplish this task; I  
> chose this one because it's very flexible. Try changing the value of  
> 'flds' to any other value, and see how the output changes.
> 

I did a quick test.
----------------------------------------------------------------
# t_ed.py
# Number of fields per record
flds = 3
data = ["%s" % i for i in range(3000000)]

def test_ed(data):
    nthFields = [data[n::flds] for n in range(flds)]
    recTuples = zip(*nthFields)
    recs = [",".join(tup) for tup in recTuples]
    output = "\n".join(recs)
    file("data.txt", "w").write(output)

test_ed(data)
----------------------------------------------------------------
# t_ug.py
# Number of fields per record
#flds = 3
data = ["%s" % i for i in range(3000000)]

def test_ug(data):
    alen = len(data)
    i = 0
    f = open("data.txt", "w")
    while(i+3 <= alen):
        f.write("%s,%s,%s\n" % (data[i], data[i+1], data[i+2]))
        i = i+3
    f.close()

test_ug(data)
----------------------------------------------------------------

Times for the two versions:

time python t_ed.py
real    0m27.093s
user    0m26.302s
sys     0m0.792s

time python t_ug.py
real    0m9.525s
user    0m8.985s
sys     0m0.536s

Plain loops are a lot faster and do not consume such a lot of memory.

Uwe


_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://leafe.com/mailman/listinfo/dabo-users
Searchable Archives: http://leafe.com/archives/search/dabo-users
This message: http://leafe.com/archives/byMID/dabo-users/[EMAIL PROTECTED]

Reply via email to