mirror of
https://github.com/python/cpython.git
synced 2025-12-04 08:34:25 +00:00
Merge assorted fixes from 3.2
This commit is contained in:
commit
3731142e19
1 changed files with 17 additions and 19 deletions
|
|
@ -62,9 +62,8 @@ your browser did something like the following::
|
||||||
|
|
||||||
# create an INET, STREAMing socket
|
# create an INET, STREAMing socket
|
||||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
#now connect to the web server on port 80
|
# now connect to the web server on port 80 - the normal http port
|
||||||
# - the normal http port
|
s.connect(("www.python.org", 80))
|
||||||
s.connect(("www.mcmillan-inc.com", 80))
|
|
||||||
|
|
||||||
When the ``connect`` completes, the socket ``s`` can be used to send
|
When the ``connect`` completes, the socket ``s`` can be used to send
|
||||||
in a request for the text of the page. The same socket will read the
|
in a request for the text of the page. The same socket will read the
|
||||||
|
|
@ -76,10 +75,8 @@ What happens in the web server is a bit more complex. First, the web server
|
||||||
creates a "server socket"::
|
creates a "server socket"::
|
||||||
|
|
||||||
# create an INET, STREAMing socket
|
# create an INET, STREAMing socket
|
||||||
serversocket = socket.socket(
|
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
socket.AF_INET, socket.SOCK_STREAM)
|
# bind the socket to a public host, and a well-known port
|
||||||
#bind the socket to a public host,
|
|
||||||
# and a well-known port
|
|
||||||
serversocket.bind((socket.gethostname(), 80))
|
serversocket.bind((socket.gethostname(), 80))
|
||||||
# become a server socket
|
# become a server socket
|
||||||
serversocket.listen(5)
|
serversocket.listen(5)
|
||||||
|
|
@ -126,12 +123,13 @@ IPC
|
||||||
---
|
---
|
||||||
|
|
||||||
If you need fast IPC between two processes on one machine, you should look into
|
If you need fast IPC between two processes on one machine, you should look into
|
||||||
whatever form of shared memory the platform offers. A simple protocol based
|
pipes or shared memory. If you do decide to use AF_INET sockets, bind the
|
||||||
around shared memory and locks or semaphores is by far the fastest technique.
|
"server" socket to ``'localhost'``. On most platforms, this will take a
|
||||||
|
shortcut around a couple of layers of network code and be quite a bit faster.
|
||||||
|
|
||||||
If you do decide to use sockets, bind the "server" socket to ``'localhost'``. On
|
.. seealso::
|
||||||
most platforms, this will take a shortcut around a couple of layers of network
|
The :mod:`multiprocessing` integrates cross-platform IPC into a higher-level
|
||||||
code and be quite a bit faster.
|
API.
|
||||||
|
|
||||||
|
|
||||||
Using a Socket
|
Using a Socket
|
||||||
|
|
@ -300,7 +298,7 @@ When Sockets Die
|
||||||
|
|
||||||
Probably the worst thing about using blocking sockets is what happens when the
|
Probably the worst thing about using blocking sockets is what happens when the
|
||||||
other side comes down hard (without doing a ``close``). Your socket is likely to
|
other side comes down hard (without doing a ``close``). Your socket is likely to
|
||||||
hang. SOCKSTREAM is a reliable protocol, and it will wait a long, long time
|
hang. TCP is a reliable protocol, and it will wait a long, long time
|
||||||
before giving up on a connection. If you're using threads, the entire thread is
|
before giving up on a connection. If you're using threads, the entire thread is
|
||||||
essentially dead. There's not much you can do about it. As long as you aren't
|
essentially dead. There's not much you can do about it. As long as you aren't
|
||||||
doing something dumb, like holding a lock while doing a blocking read, the
|
doing something dumb, like holding a lock while doing a blocking read, the
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue