Кстати: в основном потоке приложения с графическим интерфейсом (поток, автоматически созданный при запуске, в котором происходят все вещи с графическим интерфейсом), плохая практика - вызывать любую функцию, которая спит или ждет чего-либо, поскольку графический интерфейс не реагирует (зависает) пока жду.

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()

я есть приложение с графическим интерфейсом, который загружает комбинированный список и запускает поток для чтения некоторых данных и загрузки их в комбинированный список. Я не хочу, чтобы чтение блокировалось, чтобы другие компоненты графического интерфейса могли загружаться.

После звонкаthread.start() когда уместно позвонитьthread.join()? Из моего понимания,join() ожидает завершения потока, я не хочу этого, я хочу запустить поток и разрешить загрузку всех остальных компонентов. Это плохая практика, чтобы не звонитьjoin()

Ответы на вопрос(1)

Ваш ответ на вопрос