Show More
@@ -1,3 +1,8 | |||||
|
1 | 2007-05-10 Fernando Perez <Fernando.Perez@colorado.edu> | |||
|
2 | ||||
|
3 | * ipython.1: update man page and full manual with information | |||
|
4 | about threads (remove outdated warning). Closes #151. | |||
|
5 | ||||
1 | 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu> |
|
6 | 2007-05-09 Fernando Perez <Fernando.Perez@colorado.edu> | |
2 |
|
7 | |||
3 | * IPython/Extensions/ipy_constants.py: Add Gael's constants module |
|
8 | * IPython/Extensions/ipy_constants.py: Add Gael's constants module |
@@ -88,21 +88,6 There is unfortunately no way for IPython to determine at runtime whether \-tk | |||||
88 | will work reliably or not, so you will need to do some experiments before |
|
88 | will work reliably or not, so you will need to do some experiments before | |
89 | relying on it for regular work. |
|
89 | relying on it for regular work. | |
90 | . |
|
90 | . | |
91 | .SS A WARNING ABOUT SIGNALS AND THREADS |
|
|||
92 | When any of the thread systems (GTK, QT or WX) are active, either directly or |
|
|||
93 | via \-pylab with a threaded backend, it is impossible to interrupt |
|
|||
94 | long-running Python code via Ctrl\-C. IPython can not pass the |
|
|||
95 | KeyboardInterrupt exception (or the underlying SIGINT) across threads, so any |
|
|||
96 | long-running process started from IPython will run to completion, or will have |
|
|||
97 | to be killed via an external (OS-based) mechanism. |
|
|||
98 | .br |
|
|||
99 | .sp 1 |
|
|||
100 | To the best of my knowledge, this limitation is imposed by the Python |
|
|||
101 | interpreter itself, and it comes from the difficulty of writing portable |
|
|||
102 | signal/threaded code. If any user is an expert on this topic and can suggest |
|
|||
103 | a better solution, I would love to hear about it. In the IPython sources, |
|
|||
104 | look at the Shell.py module, and in particular at the runcode() method. |
|
|||
105 | . |
|
|||
106 | .SH REGULAR OPTIONS |
|
91 | .SH REGULAR OPTIONS | |
107 | After the above threading options have been given, regular options can follow |
|
92 | After the above threading options have been given, regular options can follow | |
108 | in any order. All options can be abbreviated to their shortest non-ambiguous |
|
93 | in any order. All options can be abbreviated to their shortest non-ambiguous |
@@ -8773,6 +8773,10 IPython, via the | |||||
8773 | \family typewriter |
|
8773 | \family typewriter | |
8774 | -qthread |
|
8774 | -qthread | |
8775 | \family default |
|
8775 | \family default | |
|
8776 | , | |||
|
8777 | \family typewriter | |||
|
8778 | -q4thread | |||
|
8779 | \family default | |||
8776 | and |
|
8780 | and | |
8777 | \family typewriter |
|
8781 | \family typewriter | |
8778 | -wthread |
|
8782 | -wthread | |
@@ -8783,11 +8787,11 IPython, via the | |||||
8783 |
|
8787 | |||
8784 | \end_inset |
|
8788 | \end_inset | |
8785 |
|
8789 | |||
8786 |
), can run in multithreaded mode to support pyGTK, Qt and WXPython |
|
8790 | ), can run in multithreaded mode to support pyGTK, Qt3, Qt4 and WXPython | |
8787 | respectively. |
|
8791 | applications respectively. | |
8788 | These GUI toolkits need to control the python main loop of execution, so |
|
8792 | These GUI toolkits need to control the python main loop of execution, so | |
8789 |
under a normal Python interpreter, starting a pyGTK, Qt or WXPyth |
|
8793 | under a normal Python interpreter, starting a pyGTK, Qt3, Qt4 or WXPython | |
8790 | will immediately freeze the shell. |
|
8794 | application will immediately freeze the shell. | |
8791 |
|
8795 | |||
8792 | \end_layout |
|
8796 | \end_layout | |
8793 |
|
8797 | |||
@@ -8835,50 +8839,6 As indicated in Sec.\InsetSpace ~ | |||||
8835 | \end_layout |
|
8839 | \end_layout | |
8836 |
|
8840 | |||
8837 | \begin_layout Subsection |
|
8841 | \begin_layout Subsection | |
8838 | Signals and Threads |
|
|||
8839 | \end_layout |
|
|||
8840 |
|
||||
8841 | \begin_layout Standard |
|
|||
8842 | When any of the thread systems (GTK, Qt or WX) are active, either directly |
|
|||
8843 | or via |
|
|||
8844 | \family typewriter |
|
|||
8845 | -pylab |
|
|||
8846 | \family default |
|
|||
8847 | with a threaded backend, it is impossible to interrupt long-running Python |
|
|||
8848 | code via |
|
|||
8849 | \family typewriter |
|
|||
8850 | Ctrl-C |
|
|||
8851 | \family default |
|
|||
8852 | . |
|
|||
8853 | IPython can not pass the KeyboardInterrupt exception (or the underlying |
|
|||
8854 |
|
||||
8855 | \family typewriter |
|
|||
8856 | SIGINT |
|
|||
8857 | \family default |
|
|||
8858 | ) across threads, so any long-running process started from IPython will |
|
|||
8859 | run to completion, or will have to be killed via an external (OS-based) |
|
|||
8860 | mechanism. |
|
|||
8861 | \end_layout |
|
|||
8862 |
|
||||
8863 | \begin_layout Standard |
|
|||
8864 | To the best of my knowledge, this limitation is imposed by the Python interprete |
|
|||
8865 | r itself, and it comes from the difficulty of writing portable signal/threaded |
|
|||
8866 | code. |
|
|||
8867 | If any user is an expert on this topic and can suggest a better solution, |
|
|||
8868 | I would love to hear about it. |
|
|||
8869 | In the IPython sources, look at the |
|
|||
8870 | \family typewriter |
|
|||
8871 | Shell.py |
|
|||
8872 | \family default |
|
|||
8873 | module, and in particular at the |
|
|||
8874 | \family typewriter |
|
|||
8875 | runcode() |
|
|||
8876 | \family default |
|
|||
8877 | method. |
|
|||
8878 |
|
||||
8879 | \end_layout |
|
|||
8880 |
|
||||
8881 | \begin_layout Subsection |
|
|||
8882 | I/O pitfalls |
|
8842 | I/O pitfalls | |
8883 | \end_layout |
|
8843 | \end_layout | |
8884 |
|
8844 |
General Comments 0
You need to be logged in to leave comments.
Login now