擅长:python、mysql、java
<p>了解哪些阻塞系统调用,哪些不阻塞系统调用可能是个好主意。^例如,{<cd1>}不是阻塞的,<code>accept</code>是阻塞的。因此,基本上-您通过<code>Process(..)</code>创建了一个进程,该进程在<code>accept</code>处阻塞,当建立连接时-处理该连接。你知道吗</p>
<p>你的代码应该有一个结构-类似于下面的(伪代码)</p>
<pre><code>
def handle_connection(accepted_socket):
# do whatever you want with the socket
pass
def server():
# Create socket and listen to it.
sock = socket.socket(....)
sock.bind((HOST, PORT))
sock.listen(5)
while True:
new_client = sock.accept() # blocks here.
# unblocked
client_process = Process(target=handle_connection, args=(new_client))
client_process.start()
</code></pre>
<p>我还必须提到,虽然这是一个很好的方式来理解事情可以如何做,但它不是一个好主意,开始一个新的过程,为每一个连接。你知道吗</p>