title: I can't understand multithreading using cherrypy/bottle
body: <p>I'm using bottle with a cherrypy server to utilize multithreading. As I understand it this makes each request handled by a different thread. So given the following code:</p>
  
  <pre><code>from bottle import request, route
  
  somedict = {}
  
  @route("/read")
  def read():
    return somedict
  
  
  @route("/write", method="POST")
  def write():
    somedict[request.forms.get("key")] = request.forms.get("value")
  </code></pre>
  
  <p>Would somedict be thread safe? What if a daemon thread were run to manage somedict, say it's a dictionary of active sessions and the daemon thread prunes expired sessions? If not would a simple locking mechinism suffice, and would I need to use it when reading, writing, and in the daemon thread, or just in the daemon thread?</p>
  
  <p>Also as I understand it cherrypy is a true multithreaded server. Is there a more proper method I should use to impliment a daemon thread while using cherrypy as pythons threads are not true threads? I don't wish to delve much into the cherrypy environment preferring to stick with bottle for this project though, so if it involves moving away from bottle/migrating my app to cherrypy then it doesn't really matter for now. I'd still like to know though as I didn't see much in their documentation on threads at all.</p>