Message319811
multiprocessing will attempt to pickle things using ForkingPickler when starting a new process in spawn mode (in Windows this is the only mode, in Linux this is a non-default but settable mode).
When run within the context of a unit test, if it has to pickle a TestCase subclass, it encounters objects that can't be pickled. The attached file shows a minimum working example (uncomment the two commented lines under __main__ to run with pytest).
When run with unittest.main(), it raises:
TypeError: cannot serialize '_io.TextIOWrapper' object
When run with pytest.main(), it raises:
AttributeError: Can't pickle local object 'ArgumentParser.__init__.<locals>.identity'
Note that changing the _child_process in my example to a classmethod/staticmethod or moving it to a top-level function outside the class works around this issue (both with unittest and with pytest). |
|
Date |
User |
Action |
Args |
2018-06-17 10:45:32 | Yoni Rozenshein | set | recipients:
+ Yoni Rozenshein |
2018-06-17 10:45:32 | Yoni Rozenshein | set | messageid: <1529232332.71.0.56676864532.issue33884@psf.upfronthosting.co.za> |
2018-06-17 10:45:32 | Yoni Rozenshein | link | issue33884 messages |
2018-06-17 10:45:32 | Yoni Rozenshein | create | |
|