Python學習筆記(六)多程序實現併發伺服器

2022-05-23 04:21:10 字數 1732 閱讀 5928

這個相對於多程序更加簡單,每accept乙個新的連線就建立乙個新的執行緒。**如下:

#

coding: utf-8

import

socket

import

sysimport

errno

import

threading

from time import

ctime

class

clientthread(threading.thread):

def__init__

(self, client_socket, client_address):

threading.thread.

__init__

(self)

self.client_socket =client_socket

self.client_address =client_address

defrun(self):

self.handle_connection()

defhandle_connection(self):

while

true:

data = self.client_socket.recv(1024)

ifnot

data:

print

'disconnect

', self.client_address

self.client_socket.close()

break

;

else

: self.client_socket.send(

'[%s] %s

' % (ctime(), data)) #

回顯訊息

if__name__ == '

__main__':

server_socket =socket.socket(socket.af_inet, socket.sock_stream)

listen_address = ('

localhost

', 9981)

server_socket.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)

server_socket.bind(listen_address)

server_socket.listen(10)

while

true:

try:

(client_socket, client_address) =server_socket.accept()

except

ioerror, e:

if e.errno ==errno.eintr:

continue

#繼續等待

else

:

raise

#將異常向外throw

print

'got connection from

', client_address

t =clientthread(client_socket, client_address)

t.start()

注意這裡的thread不能進行join,否則會阻塞主線程,喪失併發能力。

另外,python中的執行緒不需要進行detach。

python學習筆記(六) 多程序

依據廖雪峰官方 的python教程整理 import os 多程序 unix linux作業系統提供了乙個fork 系統呼叫,os.fork 封裝了fork系統呼叫,windows系統無法使用 print process s start.os.getpid pid os.fork if pid 0 ...

Python 學習筆記 多程序爬蟲

前段時間學習了多執行緒,但在實際的情況中對於多執行緒的速度實在不滿意,所以今天就來學學多程序分布式爬蟲,在這裡感謝莫煩的python教程。在講述多程序之前,先來回顧一下之前學習的多執行緒。對於多執行緒可以簡單的理解成運輸快遞的貨車,雖然在整個運輸快遞的途中有很多貨車參與運輸,但快遞到你手中的時間並不...

python學習筆記之多程序

我們現代的作業系統,都是支援 多工 的作業系統,對於操程式設計客棧作系統來說,乙個任務就是乙個程序 process 比如開啟乙個瀏覽器就是啟動乙個瀏覽器程序。如果我們將計算器的核心cpu比喻為一座工廠,那麼程序就像工廠裡的車間,它代表cpu所能處理的單個任務。任一時刻,cpu總是執行乙個程序,其他程...