通過Python指令碼理解系統執行緒

2021-09-03 07:24:29 字數 1681 閱讀 1712

from socket import *

#匯入socket包中的所有內容

from time import ctime

#匯入time包,同時在本地可使用ctime進行呼叫

import thread

host='localhost'

port=21567

bufsiz=1024

addr=(host,port)

tcpsersock=socket(af_inet,sock_stream)  #生成socket

tcpsersock.bind(addr) #將位址及埠元組與socket繫結

tcpsersock.listen(1) #監聽使用者請求

def client(tcpclisock,num): #定義函式。由於thread強行要求呼叫的函式必須有兩個引數。num只是充數,沒有特別含義

clisock=tcpclisock #將傳遞進來的客戶端socket賦值給clisock

while true: #定義無限迴圈

data=clisock.recv(bufsiz) #從使用者socket中讀取1024大小資料

if not data: #

如果客戶端沒有任何輸入,即直接回車或ctrl+d

break #跳出無限迴圈

clisock.send('[%s] %s' %(ctime(),data)) #返回使用者輸入並附加當前系統時間

sys.exit #結束程序

while true: #定義無限迴圈

print "waiting ...." 

#列印等待使用者輸入時的waiting

tcpclisock,addr=tcpsersock.accept() 

#處理使用者請求

print 'con from :',addr 

#列印客戶端資訊

thread.start_new_thread(client,(tcpclisock,1))    #在python中使用執行緒就靠這句了!python會開始乙個新的執行緒來執行client函式並以元組的形式傳遞給這個函式引數!

tcpsersock.close() #這句依然不會執行!

threading是官方推薦編寫執行緒使用的模組。還是有必要了解thread的,不僅可以讓我們更加了解系統執行緒的執行方式,也能找到thread與threading及queue之間的區別,進而更好的學習掌握threading!

下面是python客戶端程式。如果你可以使用telnet進行測試,那麼以下內容可以忽略。

from socket import *

host='localhost'

port=21567

bufsiz=1024

addr=(host,port)

tcpclisock=socket(af_inet,sock_stream)

tcpclisock.connect(addr)

while true:

data=raw_input("> ")

if not data:

break

tcpclisock.send(data)

data=tcpclisock.recv(bufsiz)

if not data:

break

print data

tcpclisock.close()

通過Python指令碼理解系統執行緒

from socket import 匯入socket包中的所有內容 from time import ctime 匯入time包,同時在本地可使用ctime進行呼叫 import thread host localhost port 21567 bufsiz 1024 addr host,port...

通過Python指令碼理解系統執行緒

from socket import 匯入socket包中的所有內容 from time import ctime 匯入time包,同時在本地可使用ctime進行呼叫 import thread host localhost port 21567 bufsiz 1024 addr host,port...

通過Python指令碼理解系統程序間通訊

from socket import 匯入socket包中的所有內容 from time import ctime 匯入time包,同時在本地可使用ctime進行呼叫 import os,sys 匯入os,sys包 host localhost port 21567 bufsiz 1024 定義緩衝...