Python3で奇妙なパフォーマンス「問題」/「ゲイン」に遭遇しました。次のコードは、5 つの重み行列を読み込み、それらをかなり大きなデータセットに適用します。そうしている間に、各行がディスクに書き込まれます。
このプログラムを実行すると、8 つのプロセッサすべてが 100% 占有されます。
Pythonは複数のスレッドでプログラムを自動的に実行しますか? もしそうなら、これに関するドキュメントはありますか? そうでない場合、このプログラムが octcore 上の 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)