hrntsm/Tunny

View on GitHub
Tunny.Core/Storage/InMemoryStorage.cs

Summary

Maintainability
A
0 mins
Test Coverage
using Python.Runtime;

using Tunny.Core.Util;

namespace Tunny.Core.Storage
{
    public class InMemoryStorage : PythonInit, ICreateTStorage
    {
        public dynamic Storage { get; set; }

        public dynamic CreateNewTStorage(bool useInnerPythonEngine, Settings.Storage storageSetting)
        {
            TLog.MethodStart();
            if (useInnerPythonEngine)
            {
                PythonEngine.Initialize();
                using (Py.GIL())
                {
                    CreateTStorageProcess();
                }
                PythonEngine.Shutdown();
            }
            else
            {
                CreateTStorageProcess();
            }

            return Storage;
        }

        private void CreateTStorageProcess()
        {
            TLog.MethodStart();
            dynamic optuna = Py.Import("optuna");
            Storage = optuna.storages.InMemoryStorage();
        }
    }
}