的Python 2.7.3 64 wxPython的2.8 x64的wxPython非阻塞GUI線程和多處理?
一直在閱讀關於Python線程和多,特別是一些由道格·海爾曼,已經極大地幫助文章頗有幾分。不過,我很困惑的一件事......
我認爲 Python的多模塊更或多或少的下降,在更換爲線程模塊,除此之外,ARGS必須picklable,但我m發現爲了不阻止我的GUI,我必須首先用threading創建一個新線程。然後在該線程中使用multiprocessing.Process線程進行多線程。這工作,並運作良好,但它似乎有點kludgey給我。
如果我嘗試在沒有第一次線程的情況下直接進行多進程,那麼我的GUI仍會阻塞,直到多處理作業完成。這是按照設計工作的,還是我錯過了關於多處理模塊的基本知識?
如果需要示例,我可以提供它們。
謝謝,
-RMWChaos
請求一個例子...
假設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()
也許你應該添加一個小例子來描述你的問題。 – Amr