python 爬蟲學習 day4

2021-09-02 21:33:55 字數 1404 閱讀 5439

c、multiprocessing模組提供了乙個pool類來代表程序池物件

關於程序池的概念,請參見:

pool類似於程序池,可以提供指定數量的程序給使用者呼叫,預設大小是cpu核數。程式執行時,如果有新的請求提出交到pool中,並且程序池還沒有滿的時候,就會建立乙個新的程序來給這個請求。但如果程序池已經滿了,該請求就會等待,直到有別的請求的程序完成後,才會開始建立乙個程序給該請求。

#coding=utf-8

'''multiprocessing模組

pool類來代表程序池物件

'''from multiprocessing import pool

import os,time,random

def run_task(name):

print('task %s (pid = %s) is running...' % (name,os.getpid()))

time.sleep(random.random()*3)

print ('task %s end' % (name))

if __name__ == '__main__':

print ('current process %s'% os.getpid())

p = pool(processes=3) #向pool請求3個程序

for i in range(5):

print ('waiting for all subprocesses done...')

# pool物件呼叫join()方法會等待所有子程序執行完畢,呼叫join()之前必須先呼叫close()

# 呼叫close()之後就不能繼續新增新的process了

p.close()

p.join()

print ('all subprocesses done')

d、程序間通訊

queue通訊方式

queue是多程序安全的佇列,可以使用queue實現多程序之間的資料傳遞。有倆個方法:put 和 get

》put 方法:用以插入資料到佇列中,有倆個引數:blocked 和 timeout。

1>   blocked為預設值true並且timeout為正值時,put方法會阻塞timeout指定的時間,直到該佇列有剩餘

的空間。如果超時,會丟擲異常queue.full。

2>blocked為false,但是該佇列已滿,也會丟擲異常。

》get 方法:可以在佇列裡面讀取並且刪除乙個元素。有倆個引數:blocked 和 timeout。

1>   blocked為預設值true並且timeout為正值時,則在等待時間內不會取到任何元素,並且丟擲異常:queue.empty

2>   blocked為false時,如果queue有可用的值,則會返回該值,如果隊列為空,就會丟擲異常

Python學習日記day4

turtle庫的使用 知識點1 turtle的繪圖窗體,螢幕左上角的座標為 0,0 turtule.setup width,height,startx,starty 設定窗體大小及位置。基本繪圖中,setup函式並不是必須的。知識點2 turtle空間座標體系。turtle最開始位於正中心。turt...

Python學習筆記 Day4

4.1 類和物件 1.定義類 class 類名 class televison 定義乙個電視機 defwatch self print watching 這個電視機能看電視 2.建立物件 物件名 類名 sony televison 索尼這個牌子的電視機 使用watch功能 物件名.watch son...

Python學習總結Day4

1 窗體左上角為座標原點 turtle.setup width,length,startx,starty 非必須 設定窗體的大小及位置,前兩個是窗體的大小,及長寬,後兩個是位置,相對螢幕左上角的位置 可選 1 絕對座標 海龜在畫布的正中心,執行方向為向著畫布的右側,右方向為x軸 turtle.got...