From e6a035932ebc329b6a2cb48ebc48485ff36b56d6 Mon Sep 17 00:00:00 2001 From: Matt Roeschke Date: Sat, 28 Sep 2019 20:40:19 -0700 Subject: [PATCH 1/3] Use parallel=True in rolling.apply --- pandas/core/window/rolling.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pandas/core/window/rolling.py b/pandas/core/window/rolling.py index 967d2d4e8798b..392d0d1f36216 100644 --- a/pandas/core/window/rolling.py +++ b/pandas/core/window/rolling.py @@ -1159,7 +1159,7 @@ def impl(window, *_args): return impl - @numba.njit + @numba.njit(parallel=True) def roll_apply( values: np.ndarray, begin: np.ndarray, @@ -1167,7 +1167,9 @@ def roll_apply( minimum_periods: int, ): result = np.empty(len(begin)) - for i, (start, stop) in enumerate(zip(begin, end)): + for i in numba.prange(len(result)): + start = begin[i] + stop = end[i] window = values[start:stop] count_nan = np.sum(np.isnan(window)) if len(window) - count_nan >= minimum_periods: From db234ade5a0dbe952a1cdb9ff7f87cad72f9c98f Mon Sep 17 00:00:00 2001 From: Matt Roeschke Date: Sat, 28 Sep 2019 21:38:05 -0700 Subject: [PATCH 2/3] Add nogil=True --- pandas/core/window/rolling.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/window/rolling.py b/pandas/core/window/rolling.py index 392d0d1f36216..4990eafcfa612 100644 --- a/pandas/core/window/rolling.py +++ b/pandas/core/window/rolling.py @@ -1159,7 +1159,7 @@ def impl(window, *_args): return impl - @numba.njit(parallel=True) + @numba.njit(nogil=True, parallel=True) def roll_apply( values: np.ndarray, begin: np.ndarray, From 65a5e72201072471455ba05df23461918d7ed6e5 Mon Sep 17 00:00:00 2001 From: Matt Roeschke Date: Sun, 29 Sep 2019 00:25:28 -0700 Subject: [PATCH 3/3] Only parallel=True for non 32 bit --- pandas/core/window/rolling.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pandas/core/window/rolling.py b/pandas/core/window/rolling.py index 4990eafcfa612..f668d5f811a34 100644 --- a/pandas/core/window/rolling.py +++ b/pandas/core/window/rolling.py @@ -12,6 +12,7 @@ import numpy as np import pandas._libs.window as libwindow +import pandas.compat as compat from pandas.compat._optional import import_optional_dependency from pandas.compat.numpy import function as nv from pandas.util._decorators import Appender, Substitution, cache_readonly @@ -1159,7 +1160,7 @@ def impl(window, *_args): return impl - @numba.njit(nogil=True, parallel=True) + @numba.njit(nogil=True, parallel=not compat.is_platform_32bit()) def roll_apply( values: np.ndarray, begin: np.ndarray,