From c6b010dad1df5eb015750ac31e1beb10a3365b5b Mon Sep 17 00:00:00 2001 From: Ryan Williams Date: Sun, 16 Aug 2009 14:25:56 -0700 Subject: [PATCH] Added rudimentary threading docs based on suggestion from Morarenko Kirill. --- doc/images/threading_illustration.png | Bin 0 -> 33786 bytes doc/index.rst | 1 + doc/threading.rst | 21 +++++++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 doc/images/threading_illustration.png create mode 100644 doc/threading.rst diff --git a/doc/images/threading_illustration.png b/doc/images/threading_illustration.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb9cbd0c9a4a745be27343f97c6651f56c620ce GIT binary patch literal 33786 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

@$k0Odj^LG&lljsR+5L4^z-`KN@jJhwCe+ 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 import thread + >>> from eventlet import tpool + >>> def my_func(starting_ident): + ... print "running in new thread:", starting_ident != thread.get_ident() + >>> tpool.execute(my_func, thread.get_ident()) + running in new thread: True + +My default there are 20 threads in the pool, but you can configure this by setting the environment variable ``EVENTLET_THREADPOOL_SIZE`` to the desired pool size before importing tpool. \ No newline at end of file