Cuándo llamar a thread.join en una aplicación GUI
import wx
import json
import queue
from collections import namedtuple
import threading
class MyDialog(wx.Frame):
def __init__(self, parent, title):
self.no_resize = wx.DEFAULT_FRAME_STYLE & ~ (wx.RESIZE_BORDER | wx.MAXIMIZE_BOX)
wx.Frame.__init__(self, parent, title=title, size=(500, 450),style = self.no_resize)
self.panel = wx.Panel(self, size=(250, 270))
self.emp_selection = wx.ComboBox(self.panel, -1, pos=(40, 50), size=(200,100))
self.start_read_thread()
#code to load other GUI components
self.Centre()
self.Show(True)
def read_employees(self, read_file):
list_of_emails = queue.Queue()
with open(read_file) as f_obj:
employees = json.load(f_obj)
list_of_emails = [empEmail for empEmail in employees.keys()]
wx.CallAfter(self.emp_selection.Append, list_of_emails)
def start_read_thread(self):
filename = 'employee.json'
empThread = threading.Thread(target=self.read_employees, args=(filename,))
empThread.start()
Tengo una aplicación GUI que carga un cuadro combinado y comienza un hilo para leer algunos datos y cargarlos en el cuadro combinado. No quiero que la lectura se bloquee, de modo que los otros componentes de la GUI puedan cargarse.
Despues de llamarthread.start()
cuando es apropiado llamarthread.join()
? Desde mi entendimiento,join()
espera a que se complete el subproceso, no quiero eso, quiero iniciar el subproceso y permitir que se carguen todos los demás componentes. ¿Es una mala práctica no llamar?join()