我有一个GUI,通过点击一个按钮,我必须开始一个大计算。Miltiprocessing vs multithreading
我使用QtDesigner与Python 2.7
在开始的时候,我有而大计算正在我的GUI没有响应的问题。
我解决了这个使用线程模块:
class myMainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
#rest of the code here
class heavyCalculations(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
#rest of the code here
我怀疑现在是:比方说,我要开始4次计算,我想用所有4个内核的我的电脑前工作的时间。为此我需要多处理,但是我应该怎么做以避免我的GUI变得无法响应,但同时要按时使用4个内核?
据我所知,如果我开始一个新的进程为每个繁重的计算,它确实并行工作,但我的GUI变得无法响应。
如果我启动4个线程,它也可以工作,GUI不受影响,但这不是真正的并行。
任何帮助?
为什么你认为线程不平行? – Zaffy 2014-10-18 20:55:05
线程并不平行,处理器从一个跳转到另一个跳转非常快,假装是“并行”的,但如果我们在4个进程按时处理4个内核时并行调用并行处理器,则处理器并不是并行处理。这是不一样的。 – codeKiller 2014-10-18 20:58:06
我可以通过多线程使所有内核达到100%,所以我会争辩说一个进程!=一个内核 – Zaffy 2014-10-18 21:04:20