diff -r a8f8ada7825c Lib/multiprocessing/queues.py --- a/Lib/multiprocessing/queues.py Fri Jun 12 16:48:30 2015 -0400 +++ b/Lib/multiprocessing/queues.py Sat Jun 13 17:10:55 2015 +1200 @@ -78,7 +78,8 @@ self._poll = self._reader.poll def put(self, obj, block=True, timeout=None): - assert not self._closed + if self._closed: + raise OSError("handle is closed") if not self._sem.acquire(block, timeout): raise Full diff -r a8f8ada7825c Lib/test/_test_multiprocessing.py --- a/Lib/test/_test_multiprocessing.py Fri Jun 12 16:48:30 2015 -0400 +++ b/Lib/test/_test_multiprocessing.py Sat Jun 13 17:10:55 2015 +1200 @@ -743,6 +743,13 @@ # Windows (usually 15.6 ms) self.assertGreaterEqual(delta, 0.170) + def test_close(self): + q = multiprocessing.Queue() + q.close() + self.assertTrue(q._closed) + self.assertRaises(OSError, q.put, "ok") + self.assertRaises(OSError, q.get) + # # #