// Initialize initializes the python interpreter and its GIL func Initialize() error { // make sure the python interpreter has been initialized if C.Py_IsInitialized() == 0 { C.Py_Initialize() } if C.Py_IsInitialized() == 0 { return fmt.Errorf("python: could not initialize the python interpreter") } // make sure the GIL is correctly initialized if C.PyEval_ThreadsInitialized() == 0 { C.PyEval_InitThreads() } if C.PyEval_ThreadsInitialized() == 0 { return fmt.Errorf("python: could not initialize the GIL") } return nil }
func init() { log.Debug("> Initilize Python.") runtime.LockOSThread() if C.Py_IsInitialized() == 0 { C.Py_Initialize() } if C.Py_IsInitialized() == 0 { panic(fmt.Errorf("python: could not initialize the python interpreter")) } // make sure the GIL is correctly initialized if C.PyEval_ThreadsInitialized() == 0 { C.PyEval_InitThreads() } if C.PyEval_ThreadsInitialized() == 0 { panic(fmt.Errorf("python: could not initialize the GIL")) } log.Debug("< Initilized Python.") _tstate := C.PyGILState_GetThisThreadState() C.PyEval_ReleaseThread(_tstate) }