From d808c6edb5d867cfe35c6bba6bf0f34e9d831f20 Mon Sep 17 00:00:00 2001 From: David Gardner Date: Fri, 30 Aug 2024 15:10:07 -0700 Subject: [PATCH] Release gil before calling on_next --- python/mrc/_pymrc/src/segment.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python/mrc/_pymrc/src/segment.cpp b/python/mrc/_pymrc/src/segment.cpp index 9159380bc..09e5e8a61 100644 --- a/python/mrc/_pymrc/src/segment.cpp +++ b/python/mrc/_pymrc/src/segment.cpp @@ -284,7 +284,7 @@ class SubscriberFuncWrapper : public mrc::pymrc::PythonSource try { DVLOG(10) << ctx.info() << " Starting source"; - AcquireGIL gil; + py::gil_scoped_acquire gil; py::object py_sub = py::cast(subscriber); py::iterator py_iter = py::cast(m_gen_factory(std::move(py_sub))); PyIteratorWrapper iter_wrapper{std::move(py_iter)}; @@ -294,6 +294,7 @@ class SubscriberFuncWrapper : public mrc::pymrc::PythonSource // Only send if its subscribed. Very important to ensure the object has been moved! if (subscriber.is_subscribed()) { + py::gil_scoped_release no_gil; subscriber.on_next(std::move(next_val)); } else