2013-05-04 16 views
5

Biorąc pod uwagę następujące elementy:Python testy Nos z generatora nie działać równolegle

from time import sleep 

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

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

spodziewałbym pięć testów, aby uruchomić w biegnącej równolegle z nosetests --processes=8 a więc działają w około jednej sekundy - jednak trwa niewiele ponad pięć sekund do uruchomienia: wydaje się, że działają kolejno i nie współbieżnie.

Według dokumentacji nosowej wtyczka wieloprocesorowa obsługuje generatory testowe (jak nazywa to dokumentacja nosa) od 1.1: Używam noska 1.3.0, więc powinien być obsługiwany. Dodawanie _multiprocess_can_split_ = True robi różnicę, jak można się spodziewać, ponieważ urządzenia nie są używane.

Jak uruchomić te pięć testów jednocześnie?

Odpowiedz

2

Możesz spróbować

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() 
+0

Chciałbym raczej zrozumieć, dlaczego wtyczka wieloprocesowa nosa nie jest w stanie uruchomić istniejących testów równolegle, a nie równolegle do nich na zewnątrz nosa. – gsnedders

+0

Nie wiem, jakich ustawień używasz, ale to rozwiązanie w ogóle nie działa. Wszystkie testy są przeprowadzane w tym samym procesie i są uruchamiane sekwencyjnie. Dokonano tego na nosie 1.3 przy użyciu różnych kombinacji zmiennych wieloprocesowych i poleceń "nose-testów". Wydaje się, że problemy pochodzą z plonów. – magixx

Powiązane problemy