我正试图在python3.6(Anaconda发行版)中启动多处理。我已经对我的内部函数(数值积分)进行了大量的测试,所以我相信它是有效的。目前给我带来麻烦的是通过适当的范围,因为我得到一些“无”回报。在import multiprocessing
from multiprocessing import Pool
def chunkwise(t, size=2):
it = iter(t)
return zip(*[it]*size)
def sint(tupl):
print('arg = ',tupl)
#lower = float(tupl[0])
#upper = float(tupl[1])
exit()
#ans = scipy.integrate.quad(int2,lower,upper)
#return ans
n_CPUs = 6
smin = float(10000)
smax = float(np.inf)
smax_spacing = float(2.5*10**12)
srange = np.linspace(smin,smax_spacing,n_CPUs)
srange = np.append(srange,np.inf)
print('length srange = ',len(srange))
filler=[]
for i in range(len(srange)):
if i == 0:
filler.append(float(srange[i]))
elif srange[i] == srange[-1]:
filler.append(float(srange[i]))
else:
filler.append(float(srange[i]))
filler.append(float(srange[i]))
srange = np.array(filler)
srange = list(chunkwise(srange))
def main():
pool = Pool(processes=n_CPUs)
res1 = pool.map(sint,[(smin,float(smin*2)), (float(smin*2),float(smin*3))])#srange)
res = sum(res1)
pool.close()
pool.join()
return res
if __name__ =="__main__":
result = main()
我的一些调试过程可以在这里包含的代码中看到。现在,我只想查看传递给sint()函数的参数。当我打印结果时,我得到了结果
^{pr2}$
为什么会出现这些“无”?目前,它们的存在导致了代码的非并行版本中不存在的溢出/nan。有没有办法不让“无”出现?我尝试检查tupl、lower和upper中是否存在“None”,但Python似乎不想识别这些内容(不会打印我写的“None detected”消息)。在
任何帮助都将不胜感激!如果需要更多信息,请告诉我。在