使用threadpoolexecutor執行緒池,並使用submit提交呼叫函式
開始呼叫寫法
from concurrent.futures import threadpoolexecutor
from concurrent import futures
pool = threadpoolexecutor(20)
result = pool.submit(test, arg1)
.result
簡單說下兩句的用法,第一句是設定執行緒池最大執行緒數為20,第二句是多執行緒呼叫函式test,並且test函式有個引數是arg1,.result是獲取函式呼叫以後得返回結果,這樣呼叫的乙個問題是提交以後會等到有結果以後才會重新建立乙個執行緒
正確的用法
from concurrent.futures import threadpoolexecutor
from concurrent import futures
pool = threadpoolexecutor(20)
task = pool.submit(test, arg1)
for t in futures.as_completed(tread)
:try
: result = t.result(
)except exception as e:
print
("執行緒執行錯誤:{}"
.format
(e))
使用as_completed()函式判斷執行緒是否執行完成,然後再獲取result
使用二進位制讀取再轉換為utf-8
f =
open
(file
,'rb'
)for line in f.readlines():
line = line.decode(
"utf-8"
) line = line.strip(
)
原先得做法
這裡就不貼**了,分為兩步,先會用select查詢以便,沒有再執行insert語句
下面通過復合語句
復合語句
def
no_repeat_insert
(self, user, password, userid)
:'''
復合語句去重插入,當資料庫不存在userid等於傳入userid時插入
更改sql語句,傳入引數,execute函式第二個引數
'''insert_sql =
"insert into test (`user`, `password`, `userid`) select %s, %s, %s from" \
" dual where not exists (select * from test where `userid` = %s"
cursor = self.db_connect.cursor(
) cursor.execute(insert_sql,
(user, password, userid, userid)
)
因為header裡面這條的原因 「accept-encoding』: 『gzip, deflate」
寫爬蟲程式時候還是不要寫』accept-encoding』: 'gzip, deflate』了,就讓伺服器傳原始檔案過來吧,不用壓縮了。
TypeScript踩坑(持續更新)
很多第三方庫已經有自己的型別宣告檔案,比如 types react,types react native,這些需要單獨安裝,而例如mobx react和mobx這種會自帶型別檔案,不需要單獨安裝。我們最近有個新專案,需要照顧到不同同學,有的願意用ts,有的不想用ts,為了照顧到雙方,所有的公共模組都...
踩過的坑,持續更新
1 top竟然是dom中的保留字,和window乙個型別的東西,當初還很2b的設定var top 2 innerhtml的問題,在xhtml中要求符合標準格式才能成功,比如我遇到的是在乙個p元素中,再插入p就是非法的。還要注意ie下面的某些元素唯讀,如等。3 偷懶用var a b c null 會怎...
SQL踩坑集合,持續更新
1.oracle中null資料的計算 select count from pier.testxhh t where t.name a 結果 0 select count from pier.testxhh t where t.name a 結果 1 select count from pier.te...