mp_queue_pickle_in_main_thread.patch (against the default branch) fixes the problem by doing the pickling in Queue.put(). It is version of a patch for Issue 8037 (although I believe the behaviour complained about in Issue 8037 is not an actual bug).
The patch also has the advantage of ensuring that weakref callbacks and
__del__ methods for objects put in the queue will not be run in the
background thread. (Bytes objects have trivial destructors.) This
potentially prevents inconsistent state caused by forking a process
while the background thread is running -- see Issue 6721.