import threading # 引入多執行緒模組import time
def run(name):
print(name,"執行緒執行了!")
time.sleep(5)
# 建立2個執行緒物件
t1 = threading.thread(target=run,args=("t1",))
t2 = threading.thread(target=run,args=("t2",))
# 啟動執行緒
t1.start()
t2.start()
# 等待子執行緒執行完畢後再繼續執行主線程後的內容
使用threading 模組建立執行緒
建立乙個新的子類繼承threading、thread
例項化後呼叫 start() 方法啟動新執行緒,即它呼叫了執行緒的 run() 方法
import threading # 引入多執行緒模組import time
class mythread(threading.thread):
def __init__(self,name):
threading.thread.__init__(self)
self.name = name
def run(self):
print('開始執行緒')
print('執行緒執行中---1')
time.sleep(1)
print('執行緒執行中---2')
time.sleep(1)
print('執行緒執行中---3')
time.sleep(1)
print('執行緒執行中---4')
time.sleep(1)
print('執行緒執行中---5')
time.sleep(1)
print('結束執行緒',self.name)
# 建立執行緒
t1 = mythread("t1")
t2 = mythread("t2")
t3 = mythread("t3")
# 開啟執行緒
佇列queue
queue 是python標準集中的執行緒安全的實現
提供了乙個適用於多執行緒程式設計的先進先出的資料結構
即佇列
用來在生產者和消費者之間的資訊傳遞
對於資源,加鎖是個重要的環節
因為python原生的list,dict等,都是非執行緒安全的
而queue,是執行緒安全的,因此在滿足使用條件下,建議使用佇列
import queue# 建立佇列
q = queue.queue(maxsize=10) # 佇列最多物件數是10
for i in range(1,11):
q.put(i) # 往佇列裡放值
# 判斷佇列是否為空,迴圈取出所有值
# 使用了執行緒庫import threading
# 佇列
import queue
import os
import time
import requests
from lxml import etree
# 8hr/page/1/
# 8hr/page/2/
# 8hr/page/3/
# 爬取網頁執行緒--獲取段子列表所在的網頁,放進佇列
file = os.path.abspath(__file__) # 1、獲取當前檔案路徑
path = file.split('多執行緒爬蟲')[0] # 2、獲取共同路徑部分
filepath = path + '多執行緒爬蟲/多執行緒.txt'
class thread1(threading.thread):
def __init__(self, threadname, pagequeue, dataqueue):
threading.thread.__init__(self)
self.threadname = threadname # 執行緒名
self.pagequeue = pagequeue # 頁碼
self.dataqueue = dataqueue # 資料佇列
python爬蟲 多執行緒爬蟲
在進行爬蟲工作的時候,考慮到爬蟲執行的速度慢,那麼怎樣提公升爬蟲的速度呢,那麼就得使用多執行緒爬蟲了,接下來我以糗事百科段子的爬取進行對多執行緒爬蟲的概述 github鏈結 鏈結一 不使用多執行緒爬取糗事百科 1.上 import urllib.request import re headers f...
網路爬蟲 多執行緒爬蟲
多執行緒爬蟲 import threading class one threading.thread def init self threading.thread.init self def run self for i in range 0,10 print 我是執行緒1 class two th...
爬蟲多執行緒
多執行緒在之前的scrapy裡面已經接觸過了,就是裡面的yiled,開啟乙個新的執行緒。但是這是這是基於這個高階框架的,用的時候只知道這是開啟了乙個新的執行緒,並不是很清楚到底是怎麼執行的。而在python裡面有包 import threading引入這個包之後就可以寫自己的多執行緒了 寫多執行緒的...