今天要做資料清洗的時候,要更新乙個資料庫字段,考慮到用多程序去更新資料庫,也許程式會跑得快一些,結果開了64個程序,
結果是其他程式更新的時候,速度非常慢,最後發現的原因是,資料庫中有64個sql語句執行更新,這樣就導致了對資料庫進行增刪改查的速度很慢。
這是乙個血的教訓,所有以後的操作盡量少用多程序更新資料庫。即使是想用多程序進行sql update,可以少開幾個程序,提公升效果比較明顯
貼上查來**,以供以後學習參考
#-*-coding:utf-8-*-
from common.contest import *
import
time
defspider(item):
"正在清晰地url是:
", item['
item_url']
item_url = item['
item_url']
item_lotnum1 = item['
item_lotnum']
item_sold = item['
item_sold']
artron_session_url = item['
artron_session_url']
artfoxlive_session_url = item['
artfoxlive_session_url']
item_lotnum1
item_sold
try:
item_lotnum2 = "
@@@" + item_lotnum1 + "
@@@"
item_lotnum = re.findall('
@@@000(.*?)@@@
',item_lotnum2)[0]
except
:
try:
item_lotnum2 = "
@@@" + item_lotnum1 + "
@@@"
item_lotnum = re.findall('
@@@00(.*?)@@@
', item_lotnum2)[0]
except
:
try:
item_lotnum2 = "
@@@" + item_lotnum1 + "
@@@"
item_lotnum = re.findall('
@@@0(.*?)@@@
', item_lotnum2)[0]
except
: item_lotnum =item_lotnum1
item_sold_cur_spider = ""if'
流拍'initem_sold:
item_sold = -2item_sold_cur_spider = -2
elif'撤拍
'initem_sold:
item_sold = -3item_sold_cur_spider = -3
elif
'落槌價'in
item_sold:
item_sold1 = str(item_sold).replace('
落槌價', '').replace('
:', '').replace('
,', '').replace('
:', '').replace('
', '').replace('
', ''
) item_sold = re.findall('
\d+'
, item_sold1)[0]
item_sold_cur_spider = re.findall('
[^\d]+
', item_sold1)[0]
else
:
pass
item_sold
item_sold_cur_spider
artron_session_url
artfoxlive_session_url
item_lotnum = item_lotnum.replace('
@',''
)
item_lotnum
sql = '
update spider_yachang_2017_2_update_sold_price set item_sold_price_spider2 = %s, item_sold_cur_spider2 = %s
where session_url=%s and item_lotnum= %s
'data =(str(item_sold), str(item_sold_cur_spider), str(artron_session_url), str(item_lotnum))
update_data1(sql, data=data)
if__name__ == "
__main__":
time1 =time.time()
sql = """
select
*from
oversea_artfoxlive_2017_2_detail_info
"""resultlist =select_data(sql)
len(resultlist)
pool = multiprocessing.pool(64)
for item in
resultlist:
#print "正在爬取的位置是:",resultlist.index(item)
#spider(item)
pool.close()
pool.join()
多程序 多程序queue
多程序 import multiprocessing import threading import time defthread run print threading.get ident defrun name time.sleep 2 print hello name t threading....
python多程序 python多程序
當有多個非相關任務需要處理時,並行能大大提高處理速度。這裡簡要介紹python的multiprocessing模組。簡單多程序編寫 當我們任務數量確定而且比較少的時候,可以手動為每個任務指定乙個程序來執行。import multiprocessing as mp def f a print a if...
對多程序輸入的理解1
假如在父程序中呼叫了標準io,會在使用者空間產生乙個結構體,其中封裝了檔案io返回的檔案描述符fd,同時還有針對不同函式的輸入輸出緩衝區,與之對應的核心空間也有乙個檔案io建立的結構體。所以,stdin stdout和stderr都指向的是使用者空間的那個結構體,型別是file 當呼叫fork函式建...