Guest User

Untitled

a guest
Jun 17th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.25 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import sys
  3. import cProfile
  4. import pstats
  5.  
  6. from PyQt4.QtCore import Qt, QAbstractItemModel, QVariant, QModelIndex
  7. from PyQt4.QtGui import QApplication, QTreeView
  8.  
  9. # 200 root nodes with 10 subnodes each
  10.  
  11. class TreeNode(object):
  12. def __init__(self, parent, row, text):
  13. self.parent = parent
  14. self.row = row
  15. self.text = text
  16. if parent is None: # root node, create subnodes
  17. self.children = [TreeNode(self, i, unicode(i)) for i in range(10)]
  18. else:
  19. self.children = []
  20.  
  21. class TreeModel(QAbstractItemModel):
  22. def __init__(self):
  23. QAbstractItemModel.__init__(self)
  24. self.nodes = [TreeNode(None, i, unicode(i)) for i in range(200)]
  25.  
  26. def index(self, row, column, parent):
  27. if not self.nodes:
  28. return QModelIndex()
  29. if not parent.isValid():
  30. return self.createIndex(row, column, self.nodes[row])
  31. node = parent.internalPointer()
  32. return self.createIndex(row, column, node.children[row])
  33.  
  34. def parent(self, index):
  35. if not index.isValid():
  36. return QModelIndex()
  37. node = index.internalPointer()
  38. if node.parent is None:
  39. return QModelIndex()
  40. else:
  41. return self.createIndex(node.parent.row, 0, node.parent)
  42.  
  43. def columnCount(self, parent):
  44. return 1
  45.  
  46. def rowCount(self, parent):
  47. if not parent.isValid():
  48. return len(self.nodes)
  49. node = parent.internalPointer()
  50. return len(node.children)
  51.  
  52. def data(self, index, role):
  53. if not index.isValid():
  54. return QVariant()
  55. node = index.internalPointer()
  56. if role == Qt.DisplayRole:
  57. return QVariant(node.text)
  58. return QVariant()
  59.  
  60.  
  61. app = QApplication(sys.argv)
  62. treemodel = TreeModel()
  63. treeview = QTreeView()
  64. treeview.setSelectionMode(QTreeView.ExtendedSelection)
  65. treeview.setSelectionBehavior(QTreeView.SelectRows)
  66. treeview.setModel(treemodel)
  67. treeview.expandAll()
  68. treeview.show()
  69. cProfile.run('app.exec_()', 'profdata')
  70. p = pstats.Stats('profdata')
  71. p.sort_stats('time').print_stats()
  72.  
  73. Fri May 8 20:04:26 2009 profdata
  74.  
  75. 628377 function calls in 6.210 CPU seconds
  76.  
  77. Ordered by: internal time
  78.  
  79. ncalls tottime percall cumtime percall filename:lineno(function)
  80. 1 4.788 4.788 6.210 6.210 {built-in method exec_}
  81. 136585 0.861 0.000 1.182 0.000 /Users/hsoft/Desktop/slow_selection.py:34(parent)
  82. 142123 0.217 0.000 0.217 0.000 {built-in method createIndex}
  83. 17519 0.148 0.000 0.164 0.000 /Users/hsoft/Desktop/slow_selection.py:52(data)
  84. 162198 0.094 0.000 0.094 0.000 {built-in method isValid}
  85. 8000 0.055 0.000 0.076 0.000 /Users/hsoft/Desktop/slow_selection.py:26(index)
  86. 161357 0.047 0.000 0.047 0.000 {built-in method internalPointer}
  87. 94 0.000 0.000 0.000 0.000 /Users/hsoft/Desktop/slow_selection.py:46(rowCount)
  88. 404 0.000 0.000 0.000 0.000 /Users/hsoft/Desktop/slow_selection.py:43(columnCount)
  89. 94 0.000 0.000 0.000 0.000 {len}
  90. 1 0.000 0.000 6.210 6.210 <string>:1(<module>)
  91. 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
Add Comment
Please, Sign In to add comment