Python multiprocessing messaging code
Don't create a new process for every task. Put a loop in add_messages; q.get will wait for the next task in the queue.
receive_new_message is not doing anything useful in your example. Place q.put(new_message) right after raw_input instead.


:

def add_messages(q):    
    while True:
        # Retrieve from the queue
        message_to_add = q.get()
        print "(Add to DB)"

if __name__ == "__main__":
    q = multiprocessing.Queue()
    p_add = multiprocessing.Process(target=add_messages, args=(q,))
    p_add.start()

    while True: 
        input_message = raw_input("Type a message: ")

        # Add the new message to the queue:
        q.put(input_message)

        # Let the processes catch up before printing "Type a message: " again. (Shell purposes only)
        time.sleep(1)