title: Gevent monkeypatching breaking multiprocessing
body: <p>I am attempting to use multiprocessing's pool to run a group of processes, each of which will run a gevent pool of greenlets. The reason for this is that there is a lot of network activity, but also a lot of CPU activity, so to maximise my bandwidth and all of my CPU cores, I need multiple processes AND gevent's async monkey patching. I am using multiprocessing's manager to create a queue which the processes will access to get data to process.</p>
  
  <p>Here is a simplified fragment of the code:</p>
  
  <pre><code>import multiprocessing
  
  from gevent import monkey
  monkey.patch_all(thread=False)
  
  manager = multiprocessing.Manager()
  q = manager.Queue()
  </code></pre>
  
  <p>Here is the exception it produces:</p>
  
  <pre><code>Traceback (most recent call last):
    File "multimonkeytest.py", line 7, in &lt;module&gt;
      q = manager.Queue()
    File "/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/managers.py", line 667, in temp
      token, exp = self._create(typeid, *args, **kwds)
    File "/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/managers.py", line 565, in _create
      conn = self._Client(self._address, authkey=self._authkey)
    File "/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/connection.py", line 175, in Client
      answer_challenge(c, authkey)
    File "/usr/local/Cellar/python/2.7.2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/multiprocessing/connection.py", line 409, in answer_challenge
      message = connection.recv_bytes(256)         # reject large message
   IOError: [Errno 35] Resource temporarily unavailable
  </code></pre>
  
  <p>I believe this must be due to some difference between the behaviour of the normal socket module and gevent's socket module.</p>
  
  <p>If I monkeypatch within the subprocess, The queue is created successfully, but when the subprocess tries to get() from the queue, a very similar exception occurs. The socket does need to be monkeypatched due to doing large numbers of network requests in the subprocesses.</p>
  
  <p>My version of gevent, which I believe is the latest:</p>
  
  <pre><code>&gt;&gt;&gt; gevent.version_info
  (1, 0, 0, 'alpha', 3)
  </code></pre>
  
  <p>Any ideas?</p>