由于与多个python库不兼容_多处理与NumPy不兼容

我正在尝试使用多处理运行一个简单的测试。在我导入numpy之前,这个测试运行得很好(即使它没有在程序中使用)。代码如下:from multiprocessing import Pool

import time

import numpy as np #this is the problematic line

def CostlyFunc(N):

""""""

tstart = time.time()

x = 0

for i in xrange(N):

for j in xrange(N):

if i % 2: x += 2

else: x -= 2

print "CostlyFunc : elapsed time %f s" % (time.time() - tstart)

return x

#serial application

ResultList0 = []

StartTime = time.time()

for i in xrange(3):

ResultList0.append(CostlyFunc(5000))

print "Elapsed time (serial) : ", time.time() - StartTime

#multiprocessing application

StartTime = time.time()

pool = Pool()

asyncResult = pool.map_async(CostlyFunc, [5000, 5000, 5000])

ResultList1 = asyncResult.get()

print "Elapsed time (multiporcessing) : ", time.time() - StartTime

如果不导入numpy,结果是:

^{pr2}$

总运行时间与1个进程所需的时间相似,这意味着计算已被并行化。如果我导入numpy,结果会变成:CostlyFunc : elapsed time 2.877116 s

CostlyFunc : elapsed time 2.866778 s

CostlyFunc : elapsed time 2.860894 s

Elapsed time (serial) : 8.60492110252

CostlyFunc : elapsed time 8.450145 s

CostlyFunc : elapsed time 8.473006 s

CostlyFunc : elapsed time 8.506402 s

Elapsed time (multiporcessing) : 8.55398178101

串行和多处理方法所用的总时间是相同的,因为只使用一个核心。很明显,这个问题来自于纽姆。我的多处理版本和NumPy版本是否可能不兼容?在

我目前正在linux上使用Python2.7、NumPy 1.6.2和多处理0.70a1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值