這個相對於多程序更加簡單,每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:
'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
'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總是執行乙個程序,其他程...