[GRASS-dev] pygrass: How to allow Ctrl-C to stop all subprocesses of GridModule

Moritz Lennert mlennert at club.worldonline.be
Fri Mar 9 00:16:01 PST 2018


Hi Nikos !

Am 9. März 2018 09:01:25 MEZ schrieb Nikos Alexandris <nik at nikosalexandris.net>:
>* Moritz Lennert <mlennert at club.worldonline.be> [2018-03-08 15:05:46
>+0100]:
>
>>And another question on GridModule:
>>
>>For the same module using GridModule to split the task of edge 
>>detection in a raster map into many parallel tasks, when I want to 
>>stop the module run using Ctrl-C I get tons of
>>
>>Process PoolWorker-315:
>>Traceback (most recent call last):
>>Traceback (most recent call last):
>>  File "/usr/lib/python2.7/multiprocessing/process.py", line 267, in 
>>_bootstrap
>>  File "/usr/lib/python2.7/multiprocessing/process.py", line 267, in 
>>_bootstrap
>>    self.run()
>>    self.run()
>>  File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in
>run
>>  File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in
>run
>>    self._target(*self._args, **self._kwargs)
>>    self._target(*self._args, **self._kwargs)
>>  File "/usr/lib/python2.7/multiprocessing/pool.py", line 102, in
>worker
>>  File "/usr/lib/python2.7/multiprocessing/pool.py", line 102, in
>worker
>>    task = get()
>>  File "/usr/lib/python2.7/multiprocessing/queues.py", line 374, in
>get
>>    task = get()
>>  File "/usr/lib/python2.7/multiprocessing/queues.py", line 374, in
>get
>>    racquire()
>>    racquire()
>>KeyboardInterrupt
>>
>>
>>and cannot stop the module, even when flooding the input with Ctrl-Cs.
>>
>>Any hint how to allow Ctrl-C to stop all subprocesses ?
>>
>>Moritz
>
>Moritz, could it be a case related to the ones mentioned in
>
>https://stackoverflow.com/a/1635084/1172302
>https://stackoverflow.com/a/11816038/1172302



Related yes, but AFAIU GridModule uses multiprocessing, not multithreading. I think it should be possible to modify something in the GridModule class so that it interrupts, but not sure about what exactly (apparently this is specifically a problem in Python 2. In Python 3 it should happen automatically IIUC.

Moritz


More information about the grass-dev mailing list