python類的構造方法
1. python中類的構造方法中需要定義和初始化變數嗎
要不要定義取決於有沒有在其他地方用到這些變數,要寫成def _int_(self,name,ID,score1,score2,score3,sum)的情況是你想要在定義類的時候同時初始化這些變數就這么寫,如果想讓這些變數用默認值初始化就可以不用這么寫
2. Python多進程系列之Pipe類
多進程還有一種數據傳遞方式叫做管道,和Queue相類似。Pipe可以在進程之間創建一條管道,並返回元組(con1,con2)。其中,con1,con2表示管道兩端的連接對象。這里要注意,必須在產生Process對象之前產生管道。
1.基本介紹1.1 構造方法Pipe([plex]):默認管道是全雙工的。若將plex的值設置為False,則con1隻能用於接收,con2隻能用於發送。
1.2 實例方法send(obj):通過連接發送對象obj
recv():接收con2.send(obj)所發送的對象。如果沒有消息可接收,recv方法會一直阻塞。如果接收的一端已經關閉連接,則拋出EOFError
close():關閉連接。如果con1被垃圾回收,將自動調用此方法。
fileno():返回連接使用的整數文件描述符
poll([timeout]):如果連接上的數據可用,返回True。timeout為指定等待的最長時限,若timeout預設,方法立即返回結果,不再等待。若timeout值為None,則操作將無限制等待數據到來。
send_bytes(buffer[,offset[,size]]):通過連接發送位元組數據緩沖區,buffer是支持緩沖區介面的任意對象,offset是緩沖區中的位元組偏移量,size是要發生的位元組數。結果以單條消息的形式發出,然後使用recv_bytes()進行接收。
recv_bytes([maxlength]):接收send_bytes()方法發送的一條完整的位元組消息。maxlength指定了要接收的最大位元組數。如果進來的消息超過了該值,引發IOError異常,並且在連接上無法進一步讀取。如果接收的一端已經關閉連接,不存在數據,則引發EOFError
recv_bytes_into(buffer[,offset]):接收一條完整的位元組消息,並把它保存在buffer對象中,該對象支持可寫入的緩沖區介面。offset指定緩沖區中放置消息處的位元組位移。返回值是接收到的位元組數。如果消息長度大於可用的緩沖區空間,將引發BufferTooShort異常。
2.使用實例frommultiprocessingimportPipe,Processimporttimedeff(subconn):time.sleep(1)subconn.send("吃了嗎")print("一方接收到的消息",subconn.recv())subconn.colse()if__name__=='__main__':parent_con,child_con=Pipe()p=Process(target=f,args=(child_con,))p.start()print("另一方接收到的消息",parent_con.recv())parent_con.send("發送的消息")result:
另一方接收到的消息吃了嗎一方接收到的消息發送的消息