一、復用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...