Speedier list by JList.
K:\jython2.5.2>java -jar jython.jar jlist_ex.py
256000 words generated in 9.84 s
Sorted in 1.48 s
Time taken for list: 1.37 s
import random
import string
import time
import javax.swing as swing
import java.awt as awt
class JListWindow(object):
def __init__(self, title, data):
t0 = time.clock()
frame = swing.JFrame(title)
frame.setLayout(awt.FlowLayout())
frame.setDefaultCloseOperation(swing.WindowConstants.EXIT_ON_CLOSE)
spane = swing.JScrollPane()
spane.getViewport().setView(swing.JList(data))
self.label = swing.JLabel('Time to build list')
frame.add(self.label)
frame.add(spane)
frame.pack()
frame.setVisible(True)
t0 -= time.clock()
self.label.text = 'Time taken for list: %.2f s' % -t0
print(self.label.text)
if __name__ == '__main__':
t0 = time.clock()
word_max = 256000
names = [''.join(random.choice(string.ascii_uppercase)
for count in range(6))
for word_count in range(word_max)]
t0 -= time.clock()
print('%i words generated in %.2f s' % (word_max, -t0))
t0 = time.clock()
names.sort()
t0 -= time.clock()
print('Sorted in %.2f s' % -t0)
JListWindow("Jython Sorted List", names)
pyTony
pyMod
5,359 posts since Apr 2010
Reputation Points: 782
Solved Threads: 852
Making object based on JFrame:
import random
import string
import time
import javax.swing as swing
import java.awt as awt
def random_words(word_max, length):
return [''.join(random.choice(string.ascii_uppercase)
for count in range(length))
for word_count in range(word_max)]
class WordWindow(swing.JFrame):
def __init__(self, length=6, word_max=256000):
super(swing.JFrame, self).__init__()
self.contentPane.layout = awt.FlowLayout( )
self.setDefaultCloseOperation(swing.WindowConstants.EXIT_ON_CLOSE)
self.title = 'Testing Swing and Jython'
self.label = swing.JLabel()
self.add(self.label)
self.pack()
self.show()
t0 = time.clock()
self.names = random_words(word_max, length)
t0 -= time.clock()
self.label.text = '%i words generated in %.2f s. ' % (word_max, -t0)
self.pack()
t0 = time.clock()
self.names.sort()
t0 -= time.clock()
self.label.text += ' Sorting %.2f s. ' % -t0
self.pack()
t0 = time.clock()
spane = swing.JScrollPane()
spane.getViewport().setView(swing.JList(self.names))
t0 -= time.clock()
self.label.text += 'Build: %.2f s. ' % -t0
self.add(spane)
self.pack()
if __name__ == '__main__':
my_swing = WordWindow()
print(my_swing.label.text)
pyTony
pyMod
5,359 posts since Apr 2010
Reputation Points: 782
Solved Threads: 852
You are free to upvote and even to give reputation. ;)
pyTony
pyMod
5,359 posts since Apr 2010
Reputation Points: 782
Solved Threads: 852