Python:当相同的代码放在不同的脚本中并使用execfile执行时,性能会有所不同

Python:当相同的代码放在不同的脚本中并使用execfile执行时,性能会有所不同,python,neural-network,built-in,biological-neural-network,neuroscience,Python,Neural Network,Built In,Biological Neural Network,Neuroscience,我有一个脚本network.py,其中包括以下内容: from brian import * . . . simulation_clock = Clock(dt=dt) . . . pop_vector = NeuronGroup(1, model=eqs_pop_vector) 此脚本引发一个TypeError,因为simulation\u clock没有作为参数传递给NeuronGroup 但是,如果我按如下方式拆分代码 $ cat simclock.py simulation_clock

我有一个脚本
network.py
,其中包括以下内容:

from brian import *
. . .
simulation_clock = Clock(dt=dt)
. . .
pop_vector = NeuronGroup(1, model=eqs_pop_vector)
此脚本引发一个
TypeError
,因为
simulation\u clock
没有作为参数传递给
NeuronGroup

但是,如果我按如下方式拆分代码

$ cat simclock.py
simulation_clock = Clock(dt=dt)
$ cat network.py
from brian import *
. . .
execfile('simclock.py')
. . .
pop_vector = NeuronGroup(1, model=eqs_pop_vector)
它运行时没有任何故障,即没有
TypeError

我的问题的答案可能部分与
神经元组的细节有关,但也比这更一般:一般来说,为什么会有相同的确切代码——在这种情况下,
模拟时钟=时钟(dt=dt)
--当与代码的其余部分分离并使用
execfile
调用时,与在与代码的其余部分相同的脚本中调用时,会产生不同的效果吗

关于
组的详细信息
,当没有
Clock
作为参数提供时,调用以下函数(使用默认关键字参数),以查找
Clock
的定义实例:

def find_instances(instancetype, startlevel=1, all=False):
    """Find first instances of a given class in the stack

    See documentation for module Brian.magic
    """
    # Note that we start from startlevel+1 because startlevel means from the calling function's point of view 
    for level in range(startlevel + 1, len(getouterframes(currentframe()))):
        objs, names = get_instances(instancetype, level, all=all)
        if len(objs):
            return (objs, names)
    return ([], [])

由于某些原因,此函数无法在使用
execfile
调用的单独文件中找到定义的
Clock
实例。所以我想这是brian中的一个bug,它提出了一个一般性的问题。(如果社区觉得这个问题太具体,我会删除它。)

是否有可能存在多个
时钟
类。当您使用
*
而不是显式地导入所有内容时,有时会覆盖其他类。我会尝试只从
brian
模块和您正在使用的任何其他模块导入您需要的东西。完全同意。我从不进口任何东西;这是别人给我的代码。只有一个
时钟
类,所以这不能解释这一点。问题似乎与
NeuronGroup
查找
时钟实例的能力有关。有一个函数
find_instances
,用于
NeuronGroup
\uuuu init\uuu
调用,用于在堆栈中搜索实例。一旦我弄清楚了这个问题,我会发布一个答案(如果其他人没有打败我的话)。