多程序對 MySQL update的影響

2021-09-07 15:04:57 字數 2992 閱讀 6627

今天要做資料清洗的時候,要更新乙個資料庫字段,考慮到用多程序去更新資料庫,也許程式會跑得快一些,結果開了64個程序,

結果是其他程式更新的時候,速度非常慢,最後發現的原因是,資料庫中有64個sql語句執行更新,這樣就導致了對資料庫進行增刪改查的速度很慢。

這是乙個血的教訓,所有以後的操作盡量少用多程序更新資料庫。即使是想用多程序進行sql update,可以少開幾個程序,提公升效果比較明顯

貼上查來**,以供以後學習參考

#

-*-coding:utf-8-*-

from common.contest import *

import

time

defspider(item):

print

"正在清晰地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']

print

item_lotnum1

print

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

print

item_sold

print

item_sold_cur_spider

print

artron_session_url

print

artfoxlive_session_url

item_lotnum = item_lotnum.replace('

@',''

)

print

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)

print

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函式建...