python 通訊高階

2021-09-19 09:32:42 字數 3680 閱讀 3029

一、復用tcp服務端和tcp接收端

二、模組匯入

import module

# 模組匯入方式一

import a_module

a_module.func(

)

import package.module

# 模組匯入方式二

import packet_a.module_a

packet_a.module_a.func(

)

from module import 成員

# 模組匯入方式三

from a_module import func

func(

)

from module import *

# 模組匯入方式四

# 此方法類似於深拷貝, 將所有的內容導過來, 但也有不好的,容易產生命名衝突。

from a_module import *

func()

from package import module

# 模組匯入方式五

from packet_a import module_a

module_a.func(

)

from package.module import 成員

# 模組匯入方式六

from packet_a.module_a import func

func(

)

一、with上下文管理器

import time

class

myopen

(object):

def__init__

(self,

file

, mode)

: self.__file =

file

self.__mode = mode

def__enter__

(self)

:print

('__enter__run ...開啟檔案'

) self.__handle =

open

(self.__file, self.__mode)

return self.__handle #return 的返回值在with接收

def__exit__

(self, exc_type, exc_val, exc_tb)

:print

('__exit__... run...關閉檔案'

)if exc_type:

print

('有錯誤'

) self.__handle.close(

)return

true

#return false

with myopen(

'test'

,'r'

)as f:

f.write(

) time.sleep(3)

print

('over'

)

二、多工

作業系統同時完成多項任務處理

併發:指的是任務數多於cpu核數,通過作業系統的各種任務排程演算法,實現用多個任務「一起」執行

並行:當任務數小於或者等於cpu核數時,每乙個任務都有對應的cpu來處理執行,即任務真的是一起執行的

import threading

import time

defdownload_music()

:for i in

range(5

):time.sleep(1)

# 休眠1秒

print

(% i)

defplay_music()

:for i in

range(5

):time.sleep(1)

# 休眠1秒

print

(% i)

defmain()

:# 建立執行緒物件t1

# target: 指向新開啟的執行緒要執行的**

t1 = threading.thread(target=download_music)

t2 = threading.thread(target=play_music)

t1.start(

)# 啟動執行緒,既然執行緒開始執行

t2.start(

)if __name__ ==

'__main__'

: main(

)

一、互斥鎖和gil

gil 是python 解釋層面的鎖,解決直譯器中多個執行緒的競爭資源問題

二、程序池

如果要使用pool建立程序,就需要使用multiprocessing.manager()中的queue(),而不是multiprocessing.queue(),否則會得到一條如下的錯誤資訊:

# -*- coding:utf-8 -*-

from multiprocessing import pool

import os, time, random

defworker

(msg)

: t_start = time.time(

)print

("%s開始執行,程序號為%d"

%(msg,os.getpid())

)# random.random()隨機生成0~1之間的浮點數

time.sleep(random.random()*

2) t_stop = time.time(

)print

(msg,

"執行完畢,耗時%0.2f"

%(t_stop-t_start)

)po = pool(3)

# 定義乙個程序池,最大程序數3

for i in

range(0

,10):

# 每次迴圈將會用空閒出來的子程序去呼叫目標

(i,)

)print

("----start----"

)po.close(

)# 關閉程序池,關閉後po不再接收新的請求

po.join(

)# 等待po中所有子程序執行完成,必須放在close語句之後

print

("-----end-----"

)

1.子執行緒何時開啟,何時執行

當呼叫thread.start()時 開啟執行緒,再執行執行緒的**

2.子執行緒何時結束

子執行緒把target指向的函式中的語句執行完畢後,或者執行緒中的run函式**執行完畢後,立即結束當前子執行緒

3.檢視當前執行緒數量

通過threading.enumerate()可列舉當前執行的所有執行緒

4.主線程何時結束

所有子執行緒執行完畢後,主線程才結束

一、linux檔案目錄

二、linux命令

ping

pwdls

-a~:家目錄

touch:建立檔案

mkdir:建立資料夾

rm:刪除檔案

python 多程序 高階 程序間通訊之Queue

假如建立了大量的程序,那程序間通訊是必不可少的。python提供了多種程序間通訊的方式,如 queue和pipe方法。他們兩者的區別在於pipe常用來在兩個程序間通訊,queue用來在多個程序間實現通訊 queue是多程序安全的佇列,可以使用queue實現多程序之間的資料傳遞。有兩個方法 put 和...

python高階用法 Python高階用法

python高階用法 三元表示式 x 10 y 20 print x if x y else y x 100 y 20 print x if x y else y 列表推導式和生成器 列表推導式 print i for i in range 10 print i 2 for i in range 1...

python 函式高階 python 函式高階

形參角度 萬能引數 動態接收位置引數 args 動態接收關鍵字引數 kwargs 的魔性用法 函式定義時 代表聚合。他將所有的位置引數 聚合成乙個元組,賦值給了args 函式定義時 將所有的關鍵字引數聚合成乙個字典中,將這個字典賦給了 kwargs 和 在函式的呼叫時 代表打散 僅限關鍵字引數 de...