@@ -61,10 +61,10 @@ completely isolated from the others.
6161 isolated from one another since there are few restrictions on memory
6262 access within the same process. The Python runtime makes a best
6363 effort at isolation but extension modules may easily violate that.
64- Therefore, do not use multiple interpreters in security-senstive
64+ Therefore, do not use multiple interpreters in security-sensitive
6565 situations, where they shouldn't have access to each other's data.
6666
67- That isolation facilitates a concurrency model based an independent
67+ That isolation facilitates a concurrency model based on independent
6868logical threads of execution, like CSP or the actor model.
6969
7070Each actual thread in Python, even if you're only running in the main
@@ -86,7 +86,7 @@ There are some downsides and temporary limitations:
8686 discipline about how the isolated components in your program interact
8787* not all PyPI extension modules support multiple interpreters yet
8888* the existing tools for passing data between interpreters safely
89- is still relatively inefficient and limited
89+ are still relatively inefficient and limited
9090* actually *sharing * data safely is tricky (true for free-threading too)
9191* all necessary modules must be imported separately in each interpreter
9292* relatively slow startup time per interpreter
@@ -103,7 +103,7 @@ Tutorial: Basics
103103First of all, keep in mind that using multiple interpreters is like
104104using multiple processes. They are isolated and independent from each
105105other. The main difference is that multiple interpreters live in the
106- same process, which makes it all more efficient and use fewer
106+ same process, which makes it all more efficient and uses fewer
107107system resources.
108108
109109Each interpreter has its own :mod: `!__main__ ` module, its own
@@ -375,7 +375,7 @@ the same rules as functions::
375375Mutable State is not Shared
376376---------------------------
377377
378- Just be be clear, the underlying data of very few mutable objects is
378+ Just to be clear, the underlying data of very few mutable objects is
379379actually shared between interpreters. The notable exceptions are
380380:class: `Queue ` and :class: `memoryview `, which we will explore in a
381381little while. In nearly every case, the raw data is copied in
@@ -428,7 +428,7 @@ the builtin :func:`exec`, it doesn't reset the namespace it uses
428428to run the code.
429429
430430In the same way, running code in an interpreter does not reset that
431- interpreter.. The next time you run code in that interpreter, the
431+ interpreter. The next time you run code in that interpreter, the
432432:mod: `!__main__ ` module will be in exactly the state in which you
433433left it::
434434
@@ -535,7 +535,7 @@ and there's an unhandled exception. In that case, Python will print
535535the traceback and the process will exit with a failure code.
536536
537537The behavior is very similar when code is run in an interpreter.
538- The traceback get printed and, rather than a failure code,
538+ The traceback gets printed and, rather than a failure code,
539539an :class: `ExecutionFailed ` exception is raised::
540540
541541 from concurrent import interpreters
0 commit comments