1
リスト 'tests1'と 'tests2'にデータを追加する次のスニペットを実行しようとしています。しかし、 'tests1'と 'tests2'を印刷すると、表示されるリストは空になります。何かここで間違っている?2つのループを並列化しているときに値を取得できません
tests1 = []
tests2 = []
def func1():
for i in range(25,26):
tests1.append(test_loader.get_tests(test_prefix=new_paths[i],tags=params.get('tags', None),
exclude=params.get('exclude', False)))
def func2():
for i in range(26,27):
tests2.append(test_loader.get_tests(test_prefix=new_paths[i],tags=params.get('tags', None),
exclude=params.get('exclude', False)))
p1 = mp.Process(target=func1)
p2 = mp.Process(target=func2)
p1.start()
p2.start()
p1.join()
p2.join()
print tests1
print tests2
このエラーは以下のようになります:トレースバック(最新のコールが最後): ファイル "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/queues.py"、行_buildin __。instancemethod failed – Aditya
@Adityaこれは、キューに追加するオブジェクトをpicklingしてunpicklingして、プロセス間でそれらを送信することによって機能します。 。 Pickleは機能を受け付けません。メソッドの代わりにオブジェクト全体を渡すこともできますが、確かに言うことのできない 'test_loader.get_tests'の詳細を知らなくても可能です。私の単純な例では、クラスに整数をラップし、動作するクラスインスタンスを返す場合ですが、インスタンスメソッドを返信すると、それと同じようなエラーで失敗します。 – aes