我刚刚在 python3 中遇到了一些奇怪的性能“问题”/“增益”。以下代码加载 5 个权重矩阵并将它们应用于相当大的数据集。这样做时,它将每一行写入磁盘。
当我执行这个程序时,所有八个处理器都被它占用了 100%。
python会自动在多个线程上执行程序吗?如果是这样,是否有这方面的任何文件?如果不是,这个程序怎么会在一个八核上消耗所有 8 个处理器?
#!/usr/bin/python3
import numpy
import struct
from scipy.special import expit
from dA import load_data
from dA import load_wb
import sys
if __name__ == '__main__':
stages=[2223,723,172,84,21]
wb=[]
for stage in stages:
w,b=load_wb("%d" % (stage))
print(numpy.max(w))
wb.append((w,b))
data=load_data()
n=data.shape[0]
dimensions=stages[-1]
filename="%d.data" % (dimensions)
chunk=">"+('f'*dimensions)
with open(filename,"wb") as f:
for i in range(n):
row=data[i]
for (w, b) in wb:
row=2*expit(2*(numpy.dot(row,w)+b))-1
s=struct.pack(chunk,*row)
f.write(s)