diff --git a/hrudelin_dockwidget.py b/hrudelin_dockwidget.py
index e44f3c99e5fc0cfe15aff244a75a42406369ddcb..6a74189ae8eaae39a55d387c646983c1088a99ac 100644
--- a/hrudelin_dockwidget.py
+++ b/hrudelin_dockwidget.py
@@ -45,11 +45,17 @@ from hrudelin.pluginUtils.tools import isWindows, isMac, which, prepareGrassEnv
 
 from multiprocessing import cpu_count
 import multiprocessing
-if platform.system() == 'Windows':
+#if platform.system() == 'Windows':
+if isWindows():
     path = os.path.abspath(os.path.join(sys.exec_prefix, '../../bin/pythonw3.exe'))
     multiprocessing.set_executable(path)
     sys.argv = [None]
     print('fix multiprocess for windows in plugin %s'%os.path.abspath(os.path.join(sys.exec_prefix, '../../bin/pythonw3.exe')))
+elif isMac():
+    path = os.path.abspath(os.path.join(sys.exec_prefix, 'bin/python3'))
+    multiprocessing.set_executable(path)
+    sys.argv = [None]
+    print('fix multiprocess for Mac in plugin %s'%os.path.abspath(os.path.join(sys.exec_prefix, 'bin/python3')))
 
 prepareGrassEnv()
 from hrudelin.hrudelinCore.modules.hrudelin_1_init import main as main1
diff --git a/pluginUtils/tools.py b/pluginUtils/tools.py
index f25e29a5ab0a561adda5a6c613689b90a372cf16..2ba6596f0f17c76aed100d74429334553e4aee98 100644
--- a/pluginUtils/tools.py
+++ b/pluginUtils/tools.py
@@ -45,6 +45,12 @@ def prepareGrassEnv():
                 pass
 
     elif isMac():
+        qgisContents = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(sys.exec_prefix))))
+        for grassVersion in ['74', '75', '76', '77', '78', '79']:
+            candidatePath = os.path.join(qgisContents, 'Resources', 'grass7')
+            if os.path.isfile(os.path.join(candidatePath, 'bin', 'grass%s' % grassVersion)):
+                grassBasePath = candidatePath
+                break
         pass
     else:
         grassBasePath = subprocess.check_output(['grass', '--config', 'path']).decode('utf-8').rstrip(os.linesep)