我不熟悉Python和Sqlite。我运行大型神经网络模拟,并将峰值存储为ASCII文件(这里命名为峰值时间.csv)有两列,第一列是峰值时间,第二列是神经元Id。每次模拟运行都有一个不同的参数(称之为theta)。我想填充数据库,这样我就可以用Neuron Id和Theta进行查询,得到这个神经元Id的所有峰值时间。 这就是我正在做的,它很管用,但速度非常慢,因为我在每一个高峰时间都在循环。有人能给我提个建议让它快点吗?提前谢谢。在
from peewee import *
from numpy import *
spkDB = SqliteDatabase('simData.db')
class SimData(Model):
neuronId = IntegerField();
class Meta:
database = spkDB
class SpikeTimes(Model):
spkNeuronId = ForeignKeyField(SimData, related_name = 'neuron')
theta = DoubleField();
spkTimes = DoubleField();
class Meta:
database = spkDB
st = loadtxt('spkTimes.csv')
curTheta = 0;
SimData.create_table()
SpikeTimes.create_table()
for k in unique(st[:, 1]):
tmp = SimData.create(neuronId = k)
tmp.save()
for m in st[st[:, 1] == k, 0]:
tmpSt = SpikeTimes.create(spkNeuronId = tmp, theta = curTheta, spkTimes = m)
tmpSt.save()
print 'done'
使用事务处理。在
另请参见:http://peewee.readthedocs.org/en/latest/peewee/cookbook.html#bulk-inserts
相关问题 更多 >
编程相关推荐