"La tabla consta de 20,000 items|filas"
Intente usando Thread, pero en realidad no me interesan ya. ya que aunque este trabajando en segundo plano, el tiempo es el mismo.
He probado usando el método Append, para agregar los items al ListCtrl, pero es lo mismo.
Le quite el código para asignarle imágenes, pero igual.
No creo que el problema sea por que python es de alto nivel, por que creo que aun MySQL Browser este escrito en C, la diferencia de 2 a 40seg es mucha (pienso).
La lista de articulos obtenida de la base de datos, es algo parecido a esto:
((ref, clase, marca, atributos, cant, precio, costo, fecha), (ref, clase, marca,....)....(n))
el codigo de la funcion es este:
Código Python:
Ver original
def AddListaInventario(self, articulos): """Agregar los articulos a la lista de inventario""" #eliminar los items anteriores self.list_ctrl_inventario.DeleteAllItems() #asignar las imagenes imagenes = [self.GetGrafico("articulo_20"), self.GetGrafico("articulo2_20")] li = wx.ImageList(20,20, True) for bmp in imagenes: num_icn = li.Add(bmp) self.list_ctrl_inventario.AssignImageList(li,wx.IMAGE_LIST_SMALL) #agregar los items for fila in articulos: if fila[4] == 0: img = 1 % (num_icn+1) else: img = 0 % (num_icn+1) index = self.list_ctrl_inventario.InsertStringItem(sys.maxint, fila[0], img) self.list_ctrl_inventario.SetStringItem(index, 1, fila[1]) self.list_ctrl_inventario.SetStringItem(index, 2, fila[2]) self.list_ctrl_inventario.SetStringItem(index, 3, fila[3]) self.list_ctrl_inventario.SetStringItem(index, 4, str(fila[4])) self.list_ctrl_inventario.SetStringItem(index, 5, str(locale.currency(fila[5], grouping=True))) self.list_ctrl_inventario.SetStringItem(index, 6, str(locale.currency(fila[6], grouping=True))) self.list_ctrl_inventario.SetStringItem(index, 7, fila[7])