He empezado con los threads,(ya se que "thread" es basto y simple pero era mucho mas simple que threading).
El error que me arroja sera tonto pero mis conocimientos son muy limitados.Solo he modificado la parte del cliente y todavia no me he puesto con el "select".
Codigo:  
Código Python:
Ver original#!/usr/bin/env python
import thread
import socket
 
# creamos el socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# ahora acemos que se conecte con el servidor
clientsocket.connect(('localhost',8000))
def escribir_texto():
         data = raw_input('>') #funcion que hace que podamos escribir para mandarlo posteriormente
# este bucle hace que mientras este conectado  haga lo que pone en el interior
while True:
    thread.start_new_thread(escribir_texto, ())
    if data:  # si no hay datos, no lo envia
        clientsocket.send(data)# enviamos los datos que hemos escrito
    else:
        print "No has escrito nada, vuelve a intentarlo."
        continue # Vuelve a comenzar el bucle
    newdata = clientsocket.recv(1024) # recibimos los datos que envie el servidor
    print 'servidor: %s' % newdata # y con esto lo escribimos en pantalla
clientsocket.close() # cerramos el socket
  
Error: 
 Cita:  Traceback (most recent call last):
    Un Saludo