無標題文章

# 1. socketservers

1) server = socketserver.TCPserver((HOST,PORT),MyTCPHandler) # 實例化一個 server

? ? ?socketserver.TheadingTCPserver() # 多線程

? ? ?socketserver.ForkingTCPserver() ? # 多進程

2) server.handle_request() # 僅處理一個請求

server.serve_forever()? # 處理多個請求

3) server_close() 關系 socketserver

# 2. paramiko 模塊

import paramiko

ssh = paramiko.SSHClient()

# 3. 進程枯怖、線程

方法

start() # 線程準備就緒兜粘,等待CPU調度

setName() # 為線程設置名稱

getName() # 獲取線程名稱

setDaemon(True) # 設置為守護線程

join() # 逐個執(zhí)行每個線程赠橙,執(zhí)行完畢后繼續(xù)往下執(zhí)行

run() # 線程被cpu調度后自動執(zhí)行線程對象的run方法,如果想自定義線程類惕鼓,直接重寫run方法就行了

線程進程的區(qū)別:

1.同一個進程中的線程共享同一內存空間,但是進程之間是獨立的唐础。

2.同一個進程中的所有線程的數(shù)據是共享的(進程通訊)箱歧,進程之間的數(shù)據是獨立的。

3.對主線程的修改可能會影響其他線程的行為一膨,但是父進程的修改(除了刪除以外)不會影響其他子進程呀邢。

4.線程是一個上下文的執(zhí)行指令,而進程則是與運算相關的一簇資源豹绪。

5.同一個進程的線程之間可以直接通信价淌,但是進程之間的交流需要借助中間代理來實現(xiàn)。

6.創(chuàng)建新的線程很容易瞒津,但是創(chuàng)建新的進程需要對父進程做一次復制蝉衣。

7.一個線程可以操作同一進程的其他線程,但是進程只能操作其子進程巷蚪。

8.線程啟動速度快买乃,進程啟動速度慢(但是兩者運行速度沒有可比性)。

**python的線程中沒有優(yōu)先級钓辆、線程組剪验,也不能被停止、暫停前联、恢復功戚、中斷,線程只能隨著線程中的代碼執(zhí)行完畢而被銷毀似嗤。**

守護線程

t.setDaemon(True) # 把子線程變成守護線程

t.start()? ? ? ? ? # 開始線程

擴展閱讀:

[搞定python多線程和多進程 ](https://www.cnblogs.com/whatisfantasy/p/6440585.html)

[由淺入深:Python多線程編程詳解](http://www.ywlib.com/archives/19.html)

# 4.GIL

* GIL的全稱是Global Interpreter Lock(全局解釋器鎖)

* GIL的釋放邏輯是當前線程遇見IO操作或者ticks計數(shù)達到100

* sys.setcheckinterva 用于調整 ticks(僅python2)

擴展閱讀:

[為什么在Python里推薦使用多進程而不是多線程](http://bbs.51cto.com/thread-1349105-1.html)

# 5.互斥鎖

lock = threading.lock() # 創(chuàng)建鎖

lock.acquire() # 請求鎖

lock.release() # 釋放鎖

# 6.遞歸鎖

lock = threading.Rlock()

# 7.信號量

semaphore = threading.BoundedSemaphore(5) #最多同時允許5個線程同時運行

# 8.Events 事件

event = threading.Event()

event.clear # 將flag設置為“False”

event.set # 將flag設置為“True”

event.is_set # 判斷是否設置了flag,用來初始化狀態(tài)

event.wait # 會一直監(jiān)聽flag啸臀,如果沒有檢測到flag就一直處于阻塞狀態(tài)

# 9.隊列

``` python

import queue

q = queue.Queue(maxsize = 3) # 實例化一個隊列(先入先出),最多放3個元素

q = queue.LifoQueue() # 實例化一個隊列(后入先出)

q = queue.PriorityQueue() # 實例化一個隊列(可設置優(yōu)先級)

q.put() # 放入隊列

q.qsize() # 隊列大小

q.get() # 從隊列取數(shù)據

q.get_nowait() # 如果取不到會拋出一個異常

```

# 10.定時器

定時 n 秒后執(zhí)行操作

``` python

from threading import Timer

def hello():

print("hello, world")

t = Timer(1, hello)

t.start()? # after 1 seconds, "hello, world" will be printed

```

# 11.多線程的使用場景:

* IO操作不占用CPU

* 計算占用CPU

* python 多線程不適合 CPU 密集操作型的任務,適合IO操作密集型的任務

# 12.多進程語法:

from multiprocessing import Process

def f():

print("123")

p = Process(target=f, args=('bob',))

# 13.進程之間數(shù)據交換

進程之間數(shù)據是不共享的,所以不會出現(xiàn)多線程GIL帶來的問題乘粒。多進程之間的通信通過Queue()或Pipe()來實現(xiàn)

Queue() # 使用方法跟threading里的queue差不多

pips() # Pipe的本質是進程之間的數(shù)據傳遞豌注,而不是數(shù)據共享,這和socket有點像

manager()? # 通過Manager可實現(xiàn)進程間數(shù)據的共享灯萍。

Manager()返回的manager對象會通過一個服務進程轧铁,來使其他進程通過代理的方式操作python對象。

manager對象支持 list, dict, Namespace, Lock, RLock, Semaphore, BoundedSemaphore, Condition,

Event, Barrier, Queue, Value ,Array.

* 示例:

``` python

from multiprocessing import Process, Manager

with Manager() as manager:

d = manager.dict()

l = manager.list(range(5))

```

# 14.進程鎖

lock = lock()

進程鎖存在的意義:共享設備旦棉,例如標準輸出設備等

# 15.進程池

apply() # 同步執(zhí)行(串行)

apply_async() # 異步執(zhí)行(并行)

terminate() # 立刻關閉進程池

join() # 主進程等待所有子進程執(zhí)行完畢齿风。必須在close或terminate()之后。

close() # 等待所有進程結束后绑洛,才關閉進程池救斑。

windows 啟動多進程:

必須加入: if __name__ == '__main__':

# callback? [回調函數(shù)]執(zhí)行后再調用(通過主進程調用)

注:

poll.close()

poll.join()? ? # 必須先close 再 join

# 16.協(xié)程

安裝 Creenlet? ? # Creenlet 手動切換? gevent 啟動切換(對 gevent 的封裝)

import Greenlet

gr1 = greenlet(test1) # 啟動一個協(xié)程

gr2 = greenlet(test2)

gr1.switch()

# 17.gevnet 爬網頁

import urllib

# urllib 默認 不知道 gevent 需要monkey.path_all()

monkey.path_all() # 把但錢程序的所有的IO操作做標記

# 18.事件驅動

# 19.多路IO復用/異步IO復用

select.select(inputs,outputs,)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市真屯,隨后出現(xiàn)的幾起案子脸候,更是在濱河造成了極大的恐慌,老刑警劉巖绑蔫,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纪他,死亡現(xiàn)場離奇詭異,居然都是意外死亡晾匠,警方通過查閱死者的電腦和手機茶袒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凉馆,“玉大人薪寓,你說我怎么就攤上這事±焦玻” “怎么了向叉?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗦董。 經常有香客問我母谎,道長,這世上最難降的妖魔是什么京革? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任奇唤,我火速辦了婚禮,結果婚禮上匹摇,老公的妹妹穿的比我還像新娘咬扇。我一直安慰自己,他們只是感情好廊勃,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布懈贺。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪梭灿。 梳的紋絲不亂的頭發(fā)上画侣,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音堡妒,去河邊找鬼配乱。 笑死,一個胖子當著我的面吹牛涕蚤,可吹牛的內容都是我干的宪卿。 我是一名探鬼主播的诵,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼万栅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了西疤?” 一聲冷哼從身側響起烦粒,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎代赁,沒想到半個月后扰她,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡芭碍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年徒役,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片窖壕。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡忧勿,死狀恐怖,靈堂內的尸體忽然破棺而出瞻讽,到底是詐尸還是另有隱情鸳吸,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布速勇,位于F島的核電站晌砾,受9級特大地震影響,放射性物質發(fā)生泄漏烦磁。R本人自食惡果不足惜养匈,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望都伪。 院中可真熱鬧乖寒,春花似錦、人聲如沸院溺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至逐虚,卻和暖如春聋溜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叭爱。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工撮躁, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人买雾。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓把曼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親漓穿。 傳聞我的和親對象是個殘疾皇子嗤军,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容

  • 概述 這篇文章中,我不會說多線程是什么晃危、線程和進程的區(qū)別叙赚、多線程有什么用,當然我也不會說什么是串行僚饭、什么是并行等問...
    hashakey閱讀 296評論 0 0
  • 【2017年最新】? iOS面試題及答案 設計模式是什么震叮? 你知道哪些設計模式,并簡要敘述鳍鸵? 設計模式是一種編碼經...
    紫色冰雨閱讀 598評論 0 1
  • 1.要做一個盡可能流暢的ListView苇瓣,你平時在工作中如何進行優(yōu)化的? ①Item布局偿乖,層級越少越好击罪,使用hie...
    fozero閱讀 714評論 0 0
  • 1. Stackless Python簡介 Stackless Python是CPython的增強版本,它實現(xiàn)了一...
    河自清閱讀 412評論 0 1
  • 轉至元數(shù)據結尾創(chuàng)建: 董瀟偉汹想,最新修改于: 十二月 23, 2016 轉至元數(shù)據起始第一章:isa和Class一....
    40c0490e5268閱讀 1,690評論 0 9