【发布时间】:2014-06-24 00:24:42
【问题描述】:
我有一个 python 代码,它使用 wx 创建一个 GUI,允许用户在他们的计算机上选择一个文件,然后调用一个我用 swig 包装的 C 函数,它使用这个文件并进行计算并将其保存到一个新文件.我希望这个函数调用在一个线程中运行,而 wx 窗口不会停止响应,而且我还有一个加载栏,它估计完成计算所需的时间并每秒更新进度。目前,代码开始在线程中运行加载条函数,然后开始在线程中运行计算,但这会导致加载条函数暂停。几分钟后完成所有计算后,加载栏功能恢复。我希望这些线程并行运行,但我无法让它与这个包装函数一起工作(其他时候我使用这个线程它已经工作了)。
我的部分代码如下:
thread.start_new_thread(self.loading_bar, (max_count,))
thread.start_new_thread(self.run_interpolation, (option,))
def loading_bar(self, max_count):
loaded = 1.0
print 180 + (max_count / 2), loaded
while loaded < 100.0:
print 180 + (max_count / 2), loaded
sleep(1)
wx.CallAfter(self.gauge.SetValue, loaded)
loaded += 100.0 / (180 + (max_count / 2))
sleep(2)
wx.CallAfter(self.gauge.SetValue, 0)
def run_interpolation(self, option):
weather_interp.main_func(self.input[1], self.input[2], self.location, option)
我听说多处理模块和线程模块比线程模块好,但我不明白为什么,尝试使用它们似乎也不起作用。
【问题讨论】:
标签: python multithreading python-2.7