5

以下を考えると:

from time import sleep

def runTest(a):
    sleep(1)
    assert a >= 0

def test_all():
    for i in range(5):
        yield (runTest, i)

5 つのテストが並行して実行されるため、約 1 秒で実行されると予想されますが、実行にnosetests --processes=8は 5 秒強かかります。これらは同時に実行されているのではなく、順次実行されているようです。

鼻のドキュメントによると、マルチプロセス プラグインは 1.1 以降、テスト ジェネレーターをサポートしています (鼻のドキュメントではテスト ジェネレーターと呼ばれています)。_multiprocess_can_split_ = Trueフィクスチャが使用されていないため、予想どおり、追加しても違いが生じます。

これら 5 つのテストを同時に実行するにはどうすればよいですか?

4

2 に答える 2

5

メーリング リストでのノーズ氏の著者によると、マルチプロセス プラグインは 1.3 のジェネレーターでは動作しません (既知のバグです)。

于 2013-05-07T11:07:48.037 に答える
3

あなたは試すことができます

from time import sleep
from multiprocessing import Process

def runTest(a):
    sleep(1)
    assert a >= 0

def test_all():
    for i in range(5):
        Process(target=(yield (runTest, i))).start()
于 2013-05-04T21:15:25.340 に答える