Before you start using threads, make sure you do at the start of your program:
from twisted.python import threadable threadable.init(1)
This will make certain parts of Twisted thread-safe so you can use them safely. However, note that most parts of Twisted are not thread-safe.
Most code in Twisted is not thread-safe. For example, writing data to a
transport from a protocol is not thread-safe. Therefore, we want a way
to schedule methods to be run in the main event loop. As discussed in
the Scheduling document, this can be
done using twisted.internet.task
module.
from twisted.internet import task def notThreadSafe(x): """do something that isn't thread-safe""" # ... def threadSafeScheduler(): """Run in thread-safe manner.""" task.schedule(notThreadSafe, 3) # will run 'notThreadSafe(3)' in the event loop