Python 2.7.3 x64 wxPython 2.8 x64
读了很多关于 python 线程和多处理的文章,特别是 Doug Hellmann 的一些文章,这些文章帮助很大。但是,我对一件事感到困惑......
我认为Python 多处理模块或多或少是线程模块的替代品,除了 args 必须是可腌制的,但我发现为了不阻塞我的 GUI,我必须首先创建一个新线程使用threading.Thread,然后使用multiprocessing.Process 在该线程中进行多进程。这行得通,而且效果很好,但对我来说似乎有点笨拙。
如果我尝试在没有第一个线程的情况下直接进行多处理,那么我的 GUI 仍然会阻塞,直到多处理作业完成。这是按设计工作,还是我错过了多处理模块的一些基本内容?
如果需要示例,我可以提供。
谢谢,
-RMW混沌
要求一个例子...
假设 onProcess() 是由 GUI 中的按钮触发的,这会阻止 GUI...
import time
import multiprocessing as mp
def myWorker(a, b):
time.sleep(0.1)
print '{} * {} = {}'.format(a, b, a*b)
def onProcess(event):
jobs = mp.cpu_count() * 2
a = 5
b = 10
for job in range(jobs):
mp.Process(target = myWorker, args = (a, b,)).start()
虽然这不...
import time
import multiprocessing as mp
import threading as th
def myWorker(a, b):
time.sleep(0.1)
print '{} * {} = {}'.format(a, b, a*b)
def onProcess(event):
a = 5
b = 10
th.Thread(target = myThread, args = [a, b,]).start()
def myThread(a, b):
jobs = mp.cpu_count() * 2
for job in range(jobs):
mp.Process(target = myWorker, args = (a, b,)).start()