2010-01-20 23 views
6

thể trùng lặp:
Multiprocessing launching too many instances of Python VMTại sao mô-đun đa xử lý python khiến CPU hoàn toàn cạn kiệt?

tôi đang cố gắng python 2,6 mô-đun đa với đoạn mã đơn giản này.

from multiprocessing import Pool 
p = Pool(5) 
def f(x): 
    return x*x 

print p.map(f, [1,2,3]) 

Nhưng mã này khiến hệ điều hành của tôi ngừng phản hồi. Có vẻ như CPU ​​quá bận. Có gì sai với mã của tôi?

BTW: có vẻ như mô-đun đa xử lý hơi nguy hiểm một chút. Tôi phải khởi động lại máy tính của mình.

Trả lời

7

Bạn không bảo vệ điểm vào, vì vậy, mỗi tiến trình con đang cố bắt đầu cuộc gọi tương tự map và vân vân (vào vô cùng!). Hãy thử các cách sau:

if __name__ == "__main__": 
    print p.map(f, [1,2,3]) 

Xem this section tài liệu của mô-đun.

+0

@Trent: thats not good :) – jkp

+0

thấy điều này: http://stackoverflow.com/questions/1923706/multiprocessing-launching-too-many-instances-of-python-vm –

Các vấn đề liên quan