我试图让两个函数同时运行。其中一个函数从服务器下载一堆文件,另一个函数更改gui中作为进度条的标签文本。执行下载的线程似乎完全阻止其他线程运行,直到完成后,即使另一个线程首先启动。这是代码:
def getData(statusText):
getFiles = threading.Thread(target=mf.getCurrentData)
progressDisplay = threading.Thread(target=progressBar, args=(statusText,))
if __name__ == '__main__':
progressDisplay.start()
getFiles.start()
编辑:当我尝试使用多处理时,我收到以下错误:PicklingError:无法pickle'tkapp'对象:
编辑2:在尝试了一切以使多处理工作之后,看起来好像这对我来说根本不是一个选项。为了使其更新GUI,我将不得不广泛修改现有代码。我不明白为什么线程不起作用。我的程序的另一部分是使用线程,并且进程运行较长,进度条在该实例中占用了更多的内存。
编辑3:我解决了这个问题。这对我来说真是太愚蠢了。程序中其他位置的循环阻止线程正确运行。我一直使用线程而不是多处理,因为我将tkinter对象传递给线程。