2011-10-19 6 views
0

私はアプリケーション(GUI:wxPython)を持っています。 ツリー項目をクリックすると、アプリケーションは何かを行います。 しかし、この時点では、タスクが完了するまで残りのアプリケーションはブロックされます。 実行は同じプロセスで実行されるので問題ありません。マルチプロセッシングにもかかわらず、プログラムはまだブロックされています

私は別のプロセス(マルチプロセッシングモジュールを使用)で転送しました タスクの実行中にプログラムがブロックされないことが予想されました。 それでもブロックされています。 :(

def Click(self, event): 
# .... 
# collect some data and create 
# mytask = [.....] 
p = Process(target=taskexecution.run, args=(mytask,)) 
p.run() 

答えて

2

あなたの代わりにp.start()を使用するとどうなるか試してみてください。

+0

私はまったく間違った方向に考えていました:あなたは実際には 'start'の代わりに' run'を使ってメインプロセスで関数を実行しています。 :これはあなたの問題を解決します。 – jro

0

あなたは非常に明確にし、徹底的にこのMouse vs Python blog postに説明されてどのようにこれを処理する。wxPythonの中に複数のプロセスを実行するときに、スレッドセーフなメソッドを使用する必要があります。

関連する問題