title: Green-threads and thread in Python
body: <p>As <a href="http://en.wikipedia.org/wiki/Green_threads" rel="noreferrer"><strong>Wikipedia states</strong></a>:</p>
  
  <blockquote>
    <p>Green threads emulate multi-threaded environments without relying on any native OS capabilities, and they are managed in user space instead of kernel space, enabling them to work in environments that do not have native thread support.</p>
  </blockquote>
  
  <p>Python's threads are implemented as <code>pthreads (kernel threads)</code>,
  and because of the global interpreter lock (GIL), a Python process only runs one thread at a time.</p>
  
  <p>[<strong>QUESTION</strong>]
  But in the case of <code>Green-threads</code> (or so-called greenlet or tasklets),</p>
  
  <blockquote>
    <ol>
    <li>Does the <code>GIL</code> affect them? Can there be more than one greenlet
    running at a time?</li>
    <li>What are the pitfalls of using greenlets or tasklets?</li>
    <li>If I use greenlets, how many of them can a process can handle? (I am wondering because in a single process you can open threads up to
    <em>ulimit</em>(<em>-s</em>, <em>-v</em>) set in your *ix system.)</li>
    </ol>
  </blockquote>
  
  <p>I need a little insight, and it would help if someone could share their experience, or guide me to the right path.</p>