This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Yoni Rozenshein
Recipients Yoni Rozenshein
Date 2018-06-17.10:45:32
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1529232332.71.0.56676864532.issue33884@psf.upfronthosting.co.za>
In-reply-to
Content
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).
History
Date User Action Args
2018-06-17 10:45:32Yoni Rozensheinsetrecipients: + Yoni Rozenshein
2018-06-17 10:45:32Yoni Rozensheinsetmessageid: <1529232332.71.0.56676864532.issue33884@psf.upfronthosting.co.za>
2018-06-17 10:45:32Yoni Rozensheinlinkissue33884 messages
2018-06-17 10:45:32Yoni Rozensheincreate