誰かが私を理解するのを手伝ってくれることを願っています。iPython ノートブックで 2 つの異なる並列ビューを作成しようとしています。最初のビューには ID 0 のプロセッサがあり、2 番目のビューには残りのすべてのプロセッサがあります。各ビューにプレフィックスを関連付けて、さまざまなプロセッサでさまざまなことを簡単に実行できるようにします。
2 番目のビューのプロセッサを使用して長い計算を行うバックグラウンド スレッドを起動します。それがバックグラウンドで実行されている間に、最初のビューを使用してコマンドを実行しようとしましたが、機能しません。次のエラーが表示されます: ValueError: '' is not in list.
ここでやろうとしていることを実行する方法があるかどうか、またはこれがサポートされていない動作であるかどうか疑問に思っています。つまり、異なるプロセッサを使用して 2 つの異なるビューを作成したいと考えています。ビュー間でプロセッサが共有されることはありません。次に、1 つのビューを使用するバックグラウンド タスクを実行しながら、同時に他のビューを無関係なタスクに使用できるようにしたいと考えています。
エラーが発生する小さなスクリプトの例を次に示します。ノートブックを直接投稿する方法がわからないので、ノートブックから生成された python スクリプトをコピーして貼り付けただけです。
# <codecell>
from IPython import parallel
cli = parallel.Client()
# <codecell>
view1 = cli[0]
view1.block = True
view1.activate("_one")
# <codecell>
view2 = cli[1:]
view2.block = True
view2.activate("_two")
# <codecell>
%px_two import time
def backFunc():
for i in range(10):
%px_two time.sleep(5)
%px_two print "In bg thread"
# <codecell>
from IPython.lib import backgroundjobs as bg
bgJob = bg.BackgroundJobManager()
bgJob.new('backFunc()')
# <codecell>
%px_one import time
def foreFunc():
for i in range(10):
%px_one time.sleep(1)
%px_one print "In fg thread"
# <codecell>
foreFunc()
forFunc() が実行されるとすぐに、エラーが発生します。
ValueError: '<IDS|MSG>' is not in list
何かご意見は?誰でもアイデアをいただければ幸いです。