classification
Title: multiprocessing Pool maxtasksperchild=0 raises exception with endless traceback
Type: behavior Stage:
Components: Versions:
process
Status: open Resolution:
Dependencies: Superseder:
Assigned To: Nosy List: davin, jeyekomon, pitrou
Priority: normal Keywords:

Created on 2020-01-28 13:04 by jeyekomon, last changed 2020-01-28 13:48 by xtreak.

Messages (1)
msg360872 - (view) Author: Tomáš Jeziorský (jeyekomon) Date: 2020-01-28 13:04
The following code is expected to fail:


import multiprocessing

def f(x):
	return x

if __name__ == '__main__':
	with multiprocessing.Pool(2, maxtasksperchild=0) as pool:
		pool.map(f, range(3))


since it uses a wrong value of the 'maxtasksperchild' parameter. I expect it to raise a ValueError but instead it starts to fill the stderr with practically endless traceback:


Process ForkPoolWorker-2:
Process ForkPoolWorker-1:
Traceback (most recent call last):
  File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3.6/multiprocessing/pool.py", line 95, in worker
    assert maxtasks is None or (type(maxtasks) == int and maxtasks > 0)
Traceback (most recent call last):
AssertionError
  File "/usr/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/lib/python3.6/multiprocessing/pool.py", line 95, in worker
    assert maxtasks is None or (type(maxtasks) == int and maxtasks > 0)
AssertionError
Process ForkPoolWorker-4:
Process ForkPoolWorker-3:
...


I don't think this is expected behavior.
Tested with Python 3.6.9 on Ubuntu 18.04.3.
History
Date User Action Args
2020-01-28 13:48:42xtreaksetnosy: + pitrou, davin
2020-01-28 13:04:56jeyekomoncreate