第三周_總結(jié)

隊(duì)列
創(chuàng)建一個(gè)隊(duì)列:queue_obj = queue.Queue(maxsize=30)
maxsize :表示允許存儲的最
(FIFO) : 對列--先進(jìn)先出
存值 : queue_obj.put( )
取值 : queue_obj.get( )
獲取隊(duì)列的大小 : queue_obj.qsize( )
判斷隊(duì)列是否滿 : queue_obj.full( )
判斷隊(duì)列是否為空 : queue_obj.empty()
# 注意 : 隊(duì)列是線程安全的,list,dict 是非線程安全的,使用的時(shí)候最好使用線程鎖
多線程
什么是多任務(wù):同時(shí)執(zhí)行多個(gè)任務(wù) 例如:同時(shí)打開微信,QQ,word秆吵,優(yōu)酷撵术,瀏覽器
同時(shí)執(zhí)行--并行
單核同時(shí)執(zhí)行的任務(wù)數(shù)量只有一個(gè),但是看上去像是在執(zhí)行多個(gè)任務(wù)森瘪,是 因?yàn)榍袚Q的間隔時(shí)間級短
多核cpu:同時(shí)可以執(zhí)行多個(gè)任務(wù)托启,假如任務(wù)量超過核心數(shù)肋殴,在某個(gè)核心下 任務(wù)會交替執(zhí)行
并發(fā)和并行的概念:
并發(fā):單核cpu同時(shí)執(zhí)行多個(gè)任務(wù),任務(wù)是同時(shí)發(fā)起的以故,但是并不是同時(shí)執(zhí)行蜗细,而是交替執(zhí)行
并行:任務(wù)數(shù)量小于或等于核心數(shù),這個(gè)時(shí)候每一個(gè)核心都在執(zhí)行任務(wù)怒详,任務(wù)是同時(shí)執(zhí)行的炉媒,
實(shí)現(xiàn)多任務(wù)的手段(方式):
1.多線程
2.多進(jìn)程
3.協(xié)程
線程之間的操作是無序的
一個(gè)線程下面有一個(gè)主線程
線程:相當(dāng)于打開一個(gè)瀏覽器
進(jìn)程:相當(dāng)于在瀏覽器里面打開多個(gè)窗口

  啟動線程: thread.start()
  添加join的目的:為了讓任務(wù)隊(duì)里中的所有請求都執(zhí)行完畢
  線程鎖:threadlock = threading.Lock()

進(jìn)程池
導(dǎo)入 from multiprocessing import Pool
創(chuàng)建一個(gè)進(jìn)程池:pool = Pool()
pool.apply() 同步的方法,執(zhí)行效率比較低
apply_async 是一個(gè)異步方法,可以提高任務(wù)執(zhí)行的效率
func,對應(yīng)的任務(wù)的函數(shù)名稱
args=(),傳遞參數(shù)(元組)
kwds={}, 傳遞參數(shù)(字典)
callback=None,(執(zhí)行成功后的回調(diào))
error_callback=None,(執(zhí)行錯(cuò)誤之后的回調(diào))

  關(guān)閉進(jìn)程池:pool.close
  pool.join() :join 方法 讓進(jìn)程池中的任務(wù)執(zhí)行完畢后昆烁,回到主線程繼續(xù)執(zhí)行
  pool.submit(): 向進(jìn)程池中添加任務(wù)
  .add_done_callback():添加回調(diào)方法
  pool.shutdown():執(zhí)行了join 方法
  dataqueue.put()   :向隊(duì)列中存值
  while not dataqueue.empty():
  print(dataqueue.get())

  
  使用manage().Queue() 創(chuàng)建一個(gè)隊(duì)列吊骤,可以實(shí)現(xiàn)在進(jìn)程池的進(jìn)程中實(shí)現(xiàn)數(shù)據(jù)的共享(通訊)
  q = Manger().Queue()

可迭代對象:能夠執(zhí)行遍歷循環(huán)的都可以稱為可迭代對象(可以使用 for i in 循環(huán))
迭代器一定是一個(gè)可迭代對象
可迭代對象不一定是一個(gè)迭代器
常見的可迭代對象:list,set,dict,str,tuple
判斷是否是可迭代對象的方法: isinstance print(isinstance(a,Iterable))
把可迭代對象轉(zhuǎn)換為一個(gè)迭代器:data_obj = iter(data)
生成器是一個(gè)特殊的迭代器,生成器一定是一個(gè)可迭代對象静尼,可以使用next方法取值
python 中實(shí)現(xiàn)生成器的兩種方式
第一種:利用tuple(元祖)實(shí)現(xiàn)生成器
第二種白粉;使用yield 實(shí)現(xiàn)生成器,一旦某個(gè)方法中出現(xiàn)了yield這個(gè)關(guān)鍵字,這個(gè)方法就不單單是一個(gè)方法了鼠渺,得到的就是一個(gè)生成器

異常處理模塊
創(chuàng)建一個(gè)瀏覽器驅(qū)動
導(dǎo)入 webdriver : from selenium import webdriver
創(chuàng)建一個(gè)瀏覽器驅(qū)動:driver = webdriver.Chrome(executable_path= '/home/tian/桌面/驅(qū)動/chromedriver' )
異常處理模塊:from selenium.common.exceptions import TimeoutException,NoSuchElementException,NoSuchFrameException
TimeoutError:超時(shí)
NoSuchElementException :沒有此節(jié)點(diǎn)
NoSuchFrameException:沒有iframe
切換到子頁面:driver.switch_to_frame('loginIframe')
在子頁面找按鈕鸭巴,然后模擬點(diǎn)擊:driver.find_element_by_id('switcher_plogin').click()
輸入賬號:driver.find_element_by_xpath('//input[@id="u"]').send_keys('464660217')
找到登錄按鈕,然后點(diǎn)擊:driver.find_element_by_xpath('//input[@id="login_button"]').click()
登錄之后可以獲取到cookies信息,保存本地,可以以后使用:print(driver.get_cookies())
負(fù)責(zé)循環(huán)等待:from selenium.webdriver.support.ui import WebDriverWait
以什么方式尋找節(jié)點(diǎn):from selenium.webdriver.common.by import By
添加條件模塊:from selenium.webdriver.support import expected_conditions as EC
顯示等待:同樣可以指定一個(gè)等待時(shí)間,不過更加靈活,可以指定一個(gè)最長等待時(shí)間如果在最長時(shí)間還沒找到節(jié)點(diǎn)則拋出異常,如果找到則立即返回節(jié)點(diǎn)信息
尋找節(jié)點(diǎn):element = WebDriverWait(driver,10).until(
#添加尋找節(jié)點(diǎn)的條件
EC.presence_of_element_located((By.ID,'anony-time'))
)

創(chuàng)建一個(gè)瀏覽器驅(qū)動:driver = webdriver.Chrome(executable_path= '/home/tian/桌面/驅(qū)動/chromedriver' )
找到輸框:driver.find_element_by_xpath('//input[@id="form_email"]').send_keys('18518753265')

構(gòu)建一個(gè)瀏覽器的驅(qū)動:driver = webdriver.Chrome(
executable_path='/home/ljh/桌面/driver/chromedriver'
)
driver.get('https://www.baidu.com/')
獲取a標(biāo)簽:a_action1 = driver.find_element_by_xpath('//div[@id="u1"]/a[3]')
將鼠標(biāo)移動到a標(biāo)簽上: ActionChains(driver).move_to_element(a_action1).perform()
單擊:ActionChains(driver).move_to_element(a_action).click(a_action).perform()
雙擊:ActionChains(driver).move_to_element(a_action).double_click(a_action).perform()
拖拽:a_action2 = driver.find_element_by_xpath('//div[@id="u1"]/a[5]')
ActionChains(driver).drag_and_drop(a_action1,a_action2).perform()

切換到系統(tǒng)的提示框:alter = driver.switch_to_alert()
執(zhí)行js代碼,重新打開一個(gè)窗口:js = 'window.open("https://www.douban.com/")'
driver.execute_script(js)
切換瀏覽器的窗口:driver.switch_to.window(driver.window_handles[0])
切換到子頁面iframe:frame = driver.switch_to_frame('loginIframe') driver.find_element_by_xpath()

將圖片轉(zhuǎn)換為灰度圖:image5 = image3.convert("L")
設(shè)置圖片的伐值:pointvalue = 150

.send_keys(key) 輸入關(guān)鍵字
.click():按鈕點(diǎn)擊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拦盹,一起剝皮案震驚了整個(gè)濱河市鹃祖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌普舆,老刑警劉巖恬口,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沼侣,居然都是意外死亡楷兽,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門华临,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人端考,你說我怎么就攤上這事雅潭〗液瘢” “怎么了?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵扶供,是天一觀的道長筛圆。 經(jīng)常有香客問我,道長椿浓,這世上最難降的妖魔是什么太援? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮扳碍,結(jié)果婚禮上提岔,老公的妹妹穿的比我還像新娘。我一直安慰自己笋敞,他們只是感情好碱蒙,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著夯巷,像睡著了一般赛惩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上趁餐,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天喷兼,我揣著相機(jī)與錄音,去河邊找鬼后雷。 笑死季惯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的喷面。 我是一名探鬼主播星瘾,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惧辈!你這毒婦竟也來了琳状?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤盒齿,失蹤者是張志新(化名)和其女友劉穎念逞,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體边翁,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翎承,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了符匾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叨咖。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甸各,到底是詐尸還是另有隱情垛贤,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布趣倾,位于F島的核電站聘惦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏儒恋。R本人自食惡果不足惜善绎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诫尽。 院中可真熱鬧禀酱,春花似錦、人聲如沸箱锐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驹止。三九已至浩聋,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間臊恋,已是汗流浹背衣洁。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抖仅,地道東北人坊夫。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像撤卢,于是被迫代替她去往敵國和親环凿。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容

  • 什么叫“多任務(wù)”放吩?就是操作系統(tǒng)可以同時(shí)運(yùn)行多個(gè)任務(wù)智听。(至少同時(shí)有3個(gè)任務(wù)正在運(yùn)行) 單核CPU如何執(zhí)行多任務(wù)? 多...
    小明坐地鐵閱讀 419評論 0 0
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,340評論 8 265
  • 線程 操作系統(tǒng)線程理論 線程概念的引入背景 進(jìn)程 之前我們已經(jīng)了解了操作系統(tǒng)中進(jìn)程的概念,程序并不能單獨(dú)運(yùn)行惕澎,只有...
    go以恒閱讀 1,635評論 0 6
  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對應(yīng)一個(gè)進(jìn)程,當(dāng)一個(gè)程序進(jìn)入內(nèi)存運(yùn)行時(shí),即變成一個(gè)進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    勝浩_ae28閱讀 5,091評論 0 23
  • 工作中時(shí)常需要收集和裁剪報(bào)紙莉测。對于剪報(bào),我從內(nèi)心是十分排斥的唧喉,把完整的報(bào)紙裁剪成一塊塊的捣卤,挑選出需要的內(nèi)容忍抽,粘貼在...
    張書彥閱讀 392評論 0 0