2014-05-08 22 views
5

Açıklayamadığım tuhaf bir soruna rastlıyorum. Yardımcı olabileceğim birisinin yardım edebileceğini umuyorum!Python'da scipy breakks çoklu işlem desteğini içe aktarma

Python 2.7.3 ve Scipy v0.14.0 çalıştırıyorum ve multiprocessing modülünü kullanarak kodumu hızlandırmak için çok basit çok işlemcili algoritmaları uygulamaya çalışıyorum. Ben basit bir örnek çalışması için idare ettik: Bu iyi çalışır

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 

,

Pool size: 8 
Built-in: 1.56904006004 
Pool : 0.447728157043 

dönen Ama çizgiyi import scipy.special yorumsuz, ben alıyorum:

Pool size: 8 
Built-in: 1.58968091011 
Pool : 1.59387993813 

ve ben Sistemimde sadece bir çekirdeğin işi yaptığını görebilir. Aslında, scipy paketinden herhangi bir modülün içe aktarılması bu etkiye sahip gibi görünüyor (birkaç tane denedim).

Herhangi bir fikrin var mı? Daha önce hiç görülmemiş bir ithalatın böyle garip ve beklenmedik bir etkiye sahip olabileceği, daha önce hiç böyle bir durum görmedim.

Teşekkürler! için @larsmans için (2)

sayesinde

Pool size: 8 
Built-in: 1.66807389259 
Pool : 0.596321105957 

güncelle:

Güncelleme (1)

sorunu kısmen iyileþtirir compute_something için scipy alma hattı Hareketli farklı bir sistem üzerinde test. Scipy v.0.12.0 kullanılarak sorun onaylanmadı. Bu sorguyu scipy posta listesine taşımak ve herhangi bir cevap gönderecektir.

+0

Python 2.7.5, SciPy 0.12.0 ile çoğaltılamaz. Hangi sürümü kullanıyorsunuz? –

+0

İlginç, denediğiniz için teşekkürler! 0.14.0b1 kullanıyorum. Daha yeni modüllerden bazılarına ihtiyacım var, bu yüzden daha yeni bir sürümü kullanıyorum. – Gabriel

+0

Sabit sürümü de denemenizi öneririm - ve eğer bu sorunu çözerse, SciPy posta listesine başvurmayı deneyin. Kitaplığın beta sürümünün hata ayıklaması gerçekten çok fazla bir şey değil. –

cevap