Tôi đang gặp phải vấn đề kỳ lạ mà tôi không thể giải thích. Tôi hy vọng một người nào đó ra có thể giúp đỡ xin vui lòng!Nhập scipy ngắt hỗ trợ đa xử lý trong Python
Tôi đang chạy Python 2.7.3 và Scipy v0.14.0 và đang cố triển khai một số thuật toán đa xử lý rất đơn giản để tăng tốc mã của tôi bằng mô-đun multiprocessing
. Tôi đã quản lý để thực hiện một ví dụ làm việc cơ bản:
import multiprocessing
import numpy as np
import time
# import scipy.special
def compute_something(t):
a = 0.
for i in range(100000):
a = np.sqrt(t)
return a
if __name__ == '__main__':
pool_size = multiprocessing.cpu_count()
print "Pool size:", pool_size
pool = multiprocessing.Pool(processes=pool_size)
inputs = range(10)
tic = time.time()
builtin_outputs = map(compute_something, inputs)
print 'Built-in:', time.time() - tic
tic = time.time()
pool_outputs = pool.map(compute_something, inputs)
print 'Pool :', time.time() - tic
này chạy tốt, trở về
Pool size: 8
Built-in: 1.56904006004
Pool : 0.447728157043
Nhưng nếu tôi bỏ ghi chú dòng import scipy.special
, tôi nhận được:
Pool size: 8
Built-in: 1.58968091011
Pool : 1.59387993813
và tôi có thể thấy rằng chỉ có một lõi đang thực hiện công việc trên hệ thống của tôi. Trong thực tế, nhập khẩu bất kỳ mô-đun từ gói scipy dường như có hiệu ứng này (tôi đã thử một số).
Bất kỳ ý tưởng nào? Tôi chưa bao giờ nhìn thấy một trường hợp như thế này trước đây, nơi mà một sự nhập khẩu rõ ràng vô hại có thể có một hiệu ứng kỳ lạ và bất ngờ.
Cảm ơn!
Cập nhật (1)
Di chuyển các dòng nhập khẩu scipy đến chức năng compute_something
phần cải thiện các vấn đề:
Pool size: 8
Built-in: 1.66807389259
Pool : 0.596321105957
Update (2)
Nhờ @larsmans cho thử nghiệm trên một hệ thống khác. Sự cố không được xác nhận bằng Scipy v.0.12.0. Di chuyển truy vấn này vào danh sách gửi thư scipy và sẽ đăng bất kỳ câu trả lời nào.
Không thể sao chép bằng Python 2.7.5, SciPy 0.12.0. Phiên bản bạn đang sử dụng? –
Thú vị, cảm ơn bạn đã thử! Tôi đang sử dụng 0.14.0b1. Tôi cần một số mô-đun gần đây hơn, do đó sử dụng một phiên bản mới hơn. – Gabriel
Tôi khuyên bạn nên thử phiên bản ổn định - và nếu điều đó khắc phục được sự cố, hãy thử liên hệ với danh sách gửi thư của SciPy. Gỡ lỗi phiên bản beta của thư viện không thực sự là thứ SO. –