gil下cpu 使用超過100%
·其實是逃出了gil的魔掌
·走進了c的懷抱
from ctypes import cdll
from threading import thread
import time
lib = cdll.loadlibrary(「./a.so」)
thread(target=lib.loop).start()
thread(target=lib.loop).start()
· 最好還是使用multiprocessing模組
多程序下的異常輸出
· 無論是多程序還是多執行緒 都應該使用logging模組
logger = logging.getlogger(filename)
filename = 『***』
logformat = logging.formatter(『%(asctime)s [%(levelname)s] %(message)s』,』%y-%m-%d %h:%m:%s』)
logger.setlevel(getattr(logging, level))
fh = logging.filehandler(filename)
fh.setformatter(logformat)
logger.addhandler(fh)
· 想要traceback
· 可以這樣
def traceback_wrap(self):
def tt():
import traceback as tb
class mimicryfile:
definit(self, log):
self.log= log
def write(self, strr):
self.log.error(strr.strip())
tb.print_exc(file=mimicryfile(self))
return tt
logger.traceback = traceback_wrap(logger)
logger.traceback() # usage
· 函式引數拆包
in [21]: def a(x, y):
…: print(x, y)
…:in [22]: i = [1,2]
in [23]: j =
in [24]: a(*i)
1 2in [25]: a(**j)
2 3· 不定長引數
in [33]: def a(*x, **y):
…: print(x, y)
…: …:
in [34]: a(1,2,3,x=2,y=3)
(1, 2, 3)
· 鏈式比較
in [1]: x = 2
in [2]: y = 2.5
in [3]: 1 < x < y < 3
out[3]: true
· for else
in [4]: for i in range(10):
…: if i == 10:
…: break
…: else:
…: print (『0~9』)
…:
python 爬蟲2 隱藏自己
方法一 head user agent req urllib.request.request url,data,head response urllib.request.urlopen req 只能在request物件上加head,而urlopen url,data,head 是錯誤的 方法二 re...
BCH生態的持續發展的背後隱藏了什麼玄機?
對於加密貨幣來說,生態建設是非常重要的一件事,就算是發展了十年之久的位元幣,依舊需要生態建設。畢竟加密貨幣在全球金融中依舊是乙個小圈子的東西,體量也是非常小的,它還需要更多的時間去成長。bch作為乙個年輕的加密貨幣,也一直在生態建設方面不斷努力。不過,相比之下,bch在生態建設方面的表現是足夠優秀的...
隱藏檔案失效 登錄檔中破玄機
很多病毒都會修改登錄檔,導致隱藏檔案不可見,即使在資料夾選項裡去掉了 隱藏受保護的作業系統檔案 和選擇了 顯示所有檔案和資料夾 仍不起作用。本文就來帶領大家破解其中的玄機。首先,要從了解登錄檔這個傢伙開始。為節約篇幅,登錄檔位址 hkey current user software microsof...