1.queue執行緒安全佇列:
# encoding=utf-8
from queue import queue
import time
import threading
# # 佇列有四個
#q = queue(4)
# for x in range(4):
# q.put(x)
## for x in range(4):
# print(q.get())
# # get 預設阻塞
# q.get(block=true)
# # put 一直阻塞,直到不滿
# q.put(block=true)
defset_value
(q):
index =
0while
true
: q.put (index)
index +=
1 time.sleep(3)
defget_value
(q):
while
true
:print
(q.get())
defmain()
: q = queue(4)
# args 需乙個列表或引數
t1 = threading.thread(target=set_value,args=
[q])
t2 = threading.thread(target=get_value,args=
[q])
t1.start(
) t2.start(
)if __name__ ==
'__main__'
: main(
)
演練: 爬取表情包(使用xpath方法)
# xpath
# encoding=utf-8
import requests
from lxml import etree
from urllib import request
# os : 獲取檔案字尾名
import os
import re
defparse_page
(url)
: headers =
response = requests.get(url,headers=headers)
# text 自動解碼正確
# print(response.text)
text = response.text
html = etree.html(text)
imgs = html.xpath(
'//div[@class="col-sm-9 center-wrap"]//img[@class!="gif"]'
)for img in imgs:
img_url = img.get(
'data-original'
) alt = img.get(
'alt'
) alt = re.sub(r'[\??\.,。!!]',''
,alt)
# extension : 副檔名 進行分割
suffix = os.path.splitext(img_url)[1
] filename = alt + suffix
request.urlretrieve(img_url,
'biaoqingbao/'
+filename)
defmain()
:for x in
range(1
,18):
url =
''.format
(x) parse_page(url)
break
if __name__ ==
'__main__'
: main(
)
python 多執行緒小演練
encoding utf 8 傳統的方式 執行 3 次 def coding for x in range 3 print 正在寫 s x time.sleep 1 def drawing for x in range 3 print 正在畫圖 s x time.sleep 1 def main c...
Python 多執行緒3 同步執行緒
現在假設這樣乙個例子 有乙個全域性的計數num,每個執行緒獲取這個全域性的計數,根據num進行一些處理,然後將num加1。很容易寫出這樣的 encoding utf 8 import threading import time class mythread threading.thread def ...
Python3多執行緒
學習python執行緒 python3 執行緒中常用的兩個模組為 thread threading 推薦使用 thread 模組已被廢棄。使用者可以使用 threading 模組代替。所以,在 python3 中不能再使用 thread 模組。為了相容性,python3 將 thread 重新命名為...