Asp.net Mvc: Ninject - IPrincipal

Другими решениями являются назначение RangeIndex или range:

df.index = pd.RangeIndex(len(df.index))

df.index = range(len(df.index))

. Это быстрее:

df = pd.DataFrame({'a':[8,7], 'c':[2,4]}, index=[7,8])
df = pd.concat([df]*10000)
print (df.head())

In [298]: %timeit df1 = df.reset_index(drop=True)
The slowest run took 7.26 times longer than the fastest. This could mean that an intermediate result is being cached.
10000 loops, best of 3: 105 µs per loop

In [299]: %timeit df.index = pd.RangeIndex(len(df.index))
The slowest run took 15.05 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 7.84 µs per loop

In [300]: %timeit df.index = range(len(df.index))
The slowest run took 7.10 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 14.2 µs per loop
14
задан Pickels 28 April 2010 в 15:53
поделиться

2 ответа

Вы можете сделать это без необходимости в провайдере в вашем NinjectModule :

Bind<IPrincipal>()
  .ToMethod(ctx => HttpContext.Current.User)
  .InRequestScope();

Обратите внимание, я включил .InRequestScope () , чтобы гарантировать, что значение метода кэшируется один раз за HTTP-запрос. Я бы рекомендовал сделать это, даже если вы используете механизм провайдера.

27
ответ дан 1 December 2019 в 09:12
поделиться

Думаю, я понял:

public class PrincipalProvider : IProvider
{
    public object Create(IContext context)
    {
        return HttpContext.Current.User;
    }

    public System.Type Type
    {
        get { return typeof(CustomPrincipal); }
    }
}

И в моем NinjectModule я делаю:

Bind<IPrincipal>().ToProvider<PrincipalProvider>();

Если это неправильно или не полностью, пожалуйста, дайте мне знать, и я ' Буду корректировать / удалять.

2
ответ дан 1 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: