2013-05-04 37 views
5

Do sau:kiểm tra Mũi Python từ máy phát điện không chạy đồng thời

from time import sleep 

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

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

Tôi mong chờ trong năm thử nghiệm để có được chạy trong chạy song song với nosetests --processes=8 và do đó chạy trong khoảng một giây - tuy nhiên, nó chỉ mất hơn năm giây để chạy: chúng xuất hiện để chạy tuần tự và không đồng thời. Theo tài liệu hướng dẫn, plugin đa xử lý đã hỗ trợ các trình tạo thử nghiệm (như tài liệu hướng dẫn mũi gọi chúng) kể từ 1.1: Tôi đang sử dụng mũi 1.3.0 để nó được hỗ trợ. Việc thêm _multiprocess_can_split_ = True sẽ tạo ra bất kỳ sự khác biệt nào, như mong đợi, vì các đồ đạc không được sử dụng.

Làm cách nào để có được năm thử nghiệm này để chạy đồng thời?

Trả lời

3

Theo tác giả mũi của, on the mailing list, plugin đa tiến không làm việc với máy phát điện trong 1.3 (a known bug), và ông khuyến nghị gắn bó với 1.1 nếu người ta cần nó để làm việc.

2

Bạn có thể thử

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

Tôi muốn hiểu rõ hơn tại sao plugin đa xử lý của mũi không quản lý để chạy thử nghiệm hiện tại đồng thời thay vì song song chúng với mũi bên ngoài. – gsnedders

+0

Tôi không biết bạn đang sử dụng cài đặt nào nhưng giải pháp này không hoạt động. Tất cả các thử nghiệm đều chạy trên cùng một tiến trình và được chạy tuần tự. Điều này đã được thực hiện trên mũi 1.3 bằng cách sử dụng các kết hợp khác nhau của các biến đa xử lý và lệnh nosetests. Các vấn đề dường như bắt nguồn từ việc sử dụng năng suất. – magixx