Skip to content

Commit 7634f5f

Browse files
authored
Release Python GIL in C++ class constructor (#493)
1 parent ef8d112 commit 7634f5f

File tree

4 files changed

+8
-4
lines changed

4 files changed

+8
-4
lines changed

sherpa-onnx/python/csrc/offline-recognizer.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,8 @@ void PybindOfflineRecognizer(py::module *m) {
4040

4141
using PyClass = OfflineRecognizer;
4242
py::class_<PyClass>(*m, "OfflineRecognizer")
43-
.def(py::init<const OfflineRecognizerConfig &>(), py::arg("config"))
43+
.def(py::init<const OfflineRecognizerConfig &>(), py::arg("config"),
44+
py::call_guard<py::gil_scoped_release>())
4445
.def(
4546
"create_stream",
4647
[](const PyClass &self) { return self.CreateStream(); },

sherpa-onnx/python/csrc/offline-tts.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ void PybindOfflineTts(py::module *m) {
4848

4949
using PyClass = OfflineTts;
5050
py::class_<PyClass>(*m, "OfflineTts")
51-
.def(py::init<const OfflineTtsConfig &>(), py::arg("config"))
51+
.def(py::init<const OfflineTtsConfig &>(), py::arg("config"),
52+
py::call_guard<py::gil_scoped_release>())
5253
.def_property_readonly("sample_rate", &PyClass::SampleRate)
5354
.def(
5455
"generate",

sherpa-onnx/python/csrc/online-recognizer.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ void PybindOnlineRecognizer(py::module *m) {
5353

5454
using PyClass = OnlineRecognizer;
5555
py::class_<PyClass>(*m, "OnlineRecognizer")
56-
.def(py::init<const OnlineRecognizerConfig &>(), py::arg("config"))
56+
.def(py::init<const OnlineRecognizerConfig &>(), py::arg("config"),
57+
py::call_guard<py::gil_scoped_release>())
5758
.def(
5859
"create_stream",
5960
[](const PyClass &self) { return self.CreateStream(); },

sherpa-onnx/python/csrc/voice-activity-detector.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,8 @@ void PybindVoiceActivityDetector(py::module *m) {
2424
using PyClass = VoiceActivityDetector;
2525
py::class_<PyClass>(*m, "VoiceActivityDetector")
2626
.def(py::init<const VadModelConfig &, float>(), py::arg("config"),
27-
py::arg("buffer_size_in_seconds") = 60)
27+
py::arg("buffer_size_in_seconds") = 60,
28+
py::call_guard<py::gil_scoped_release>())
2829
.def(
2930
"accept_waveform",
3031
[](PyClass &self, const std::vector<float> &samples) {

0 commit comments

Comments
 (0)