Started making changes to Python.html to document support for multithreaded Python SWIG applications.
This commit is contained in:
parent
35e6414099
commit
52d12bc415
1 changed files with 121 additions and 85 deletions
|
|
@ -133,6 +133,10 @@
|
||||||
<li><a href="#Python_nn77">Byte string output conversion</a>
|
<li><a href="#Python_nn77">Byte string output conversion</a>
|
||||||
<li><a href="#Python_2_unicode">Python 2 Unicode</a>
|
<li><a href="#Python_2_unicode">Python 2 Unicode</a>
|
||||||
</ul>
|
</ul>
|
||||||
|
<li><a href="#Python_multithreaded">Support for Multithreaded Applications</a>
|
||||||
|
<ul>
|
||||||
|
<li><a href="#Python_thread_UI">UI for Enabling Multithreading Support</a>
|
||||||
|
</ul>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- INDEX -->
|
<!-- INDEX -->
|
||||||
|
|
@ -6730,6 +6734,38 @@ the first is allowing unicode conversion and the second is explicitly
|
||||||
prohibiting it.
|
prohibiting it.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<H2><a name="Python_multithreaded">36.13 Support for Multithreaded Applications</a></H2>
|
||||||
|
|
||||||
|
<p>By default, SWIG does not enable support for multithreaded Python applications. More
|
||||||
|
specifically, the Python wrappers generated by SWIG will not release the
|
||||||
|
Python's interpreter's Global Interpreter Lock (GIL) when wrapped C/C++ code is
|
||||||
|
entered. Hence, while any of the wrapped C/C++ code is executing, the Python interpreter
|
||||||
|
will not be able to run any other threads, even if the wrapped C/C++ code is waiting
|
||||||
|
in a blocking call for something like network or disk IO.
|
||||||
|
|
||||||
|
Fortunately, SWIG does have the ability to enable multithreaded support and automatic
|
||||||
|
release of the GIL either for all wrapped code in a module or on a more selective basis. The user
|
||||||
|
interface for this is described in the next section.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<H3><a name="Python_thread_UI">36.13.1 UI for Enabling Multithreading Support</a></H3>
|
||||||
|
|
||||||
|
<p>The user interface is as follows:</p>
|
||||||
|
<ol>
|
||||||
|
<li>Module thread support can be enabled in two ways:
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
The <b>-threads</b> swig python option at the command line (or in <tt>setup.py</tt>):
|
||||||
|
<div class="shell">$ swig -python -threads example.i</div>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
The <b>threads</b> module option in the *.i template file:
|
||||||
|
<div class="code">%module("threads"=1)</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue