代碼一:#!/usr/bin/python#-*-coding:utf-8-*-#encoding=utf-8importthreadingimportQueueimportsysimporturllib2importreimportMySQLdb##數據庫變量設置#DB_HOST='127.0.0.1'DB_USER="XXXX"DB_PASSWD="XXXXXXXX"DB_NAME="xxxx"##變量設置#THREAD_LIMIT=3jobs=Que
系統 2019-09-27 17:47:49 1969
一、簡介我們將一個正在運行的程序稱為進程。每個進程都有它自己的系統狀態,包含內存狀態、打開文件列表、追蹤指令執行情況的程序指針以及一個保存局部變量的調用棧。通常情況下,一個進程依照一個單序列控制流順序執行,這個控制流被稱為該進程的主線程。在任何給定的時刻,一個程序只做一件事情。一個程序可以通過Python庫函數中的os或subprocess模塊創建新進程(例如os.fork()或是subprocess.Popen())。然而,這些被稱為子進程的進程卻是獨立
系統 2019-09-27 17:47:46 1969
1.到底什么是Python?你可以在回答中與其他技術進行對比下面是一些關鍵點:Python是一種解釋型語言。這就是說,與C語言和C的衍生語言不同,Python代碼在運行之前不需要編譯。其他解釋型語言還包括PHP和Ruby。Python是動態類型語言,指的是你在聲明變量時,不需要說明變量的類型。你可以直接編寫類似x=111和x="I'mastring"這樣的代碼,程序不會報錯。Python非常適合面向對象的編程(OOP),因為它支持通過組合(composit
系統 2019-09-27 17:47:20 1969
測試的過程中經常需要截取屏幕,通常的做法是使用手機自帶的截屏功能,然后將截屏文件復制出來,這種方法的優點是不需要連接數據線就可截屏,缺點則是生成的截屏文件命名是隨機命名的,復制出來也比較麻煩。另一種方法是使用PC端的手機助手類軟件。這里使用python編寫一個截屏的腳本,雙擊運行腳本就OK,截屏成功后會將截屏文件已當前時間命名,并保存在存放腳本的當前路徑的screenshot文件夾下:#!/usr/bin/envpythonimportosimportti
系統 2019-09-27 17:47:18 1969
序列化(Serialization)是將對象的信息轉換為可以存儲或傳輸的形式,后續還可以通過從存儲區中讀取或反序列化對象的狀態,重新創建該對象。在python中也可以進行序列化相關的操作,只是序列化的時候需要將對象保存為一個字典的類型。對于Python內置的數據類型(如str,unicode,int,float,bool,None,list,tuple,dict),可以直接進行序列化/反序列化處理;對于自定義類的對象進行序列化和反序列化時,需要我們自己定義
系統 2019-09-27 17:47:18 1969
使用裝python飾器做緩存裝飾器在之前的文章中有講過,這里主要是說了裝飾器的用法和應該怎么理解。這片文章給出一片補充:主要說在緩存方面的應用。在此之前呢,需要補充一些知識點:就是python查找變量的順序是什么?答案就是LEGB原則:也就是`Local->Enclosed->Global->Built-in`也就是先在局部作用域內(例如函數內)進行查找,然后在[閉包]1內查找,接下來分別是全局作用域和內置的保留名稱注意:閉包內的變量,不能改變,但是對于列
系統 2019-09-27 17:47:18 1969
登錄流程:實例化一個driver,然后driver.get()發送請求最重要的:切換iframe子框架,因為豆瓣的網頁中的登錄那部分是一個ifrme,必須切換才能尋找到對應元素利用selenium切換到賬號密碼登錄利用selenium輸入賬戶和密碼利用selenium點擊登錄按鈕然后利用字典推導式保存了一下cookie代碼實現:importtimefromseleniumimportwebdriver#實例化driverdriver=webdriver.C
系統 2019-09-27 17:47:06 1969
適用的日志格式:106.45.185.214--[06/Aug/2014:07:38:59+0800]"GET/HTTP/1.0"20010"-""-"171.104.119.22--[06/Aug/2014:08:55:01+0800]"GET/HTTP/1.0"20010"-""-"27.31.238.242--[06/Aug/2014:09:43:19+0800]"GET/HTTP/1.0"20010"-""-"218.65.202.131--[06
系統 2019-09-27 17:46:56 1969
通常來說Python中任何值都是一個對象,因此任何類型(int、str、list…)都是一個類。而類就必然有它的方法或屬性,我們要記下這么多類的所有方法顯然是不可能的,對此本文介紹兩個小技巧:dir():內置函數,用來查詢一個類或者對象所有屬性,比如>>>dir(list)。help():內置函數,用來查詢具體的說明文檔,比如>>>help(int)。在上一篇的Python3的基本數據類型中,我們初步了解了list列表,也介紹了列表是Python中使用最頻
系統 2019-09-27 17:46:51 1969
通俗的來說,Python中所謂的命名空間可以理解為一個容器。在這個容器中可以裝許多標識符。不同容器中的同名的標識符是不會相互沖突的。理解python的命名空間需要掌握三條規則:第一,賦值(包括顯式賦值和隱式賦值)產生標識符,賦值的地點決定標識符所處的命名空間。第二,函數定義(包括def和lambda)產生新的命名空間。第三,python搜索一個標識符的順序是"LEGB"。所謂的"LEGB"是python中四層命名空間的英文名字首字母的縮寫。最里面的一層是L
系統 2019-09-27 17:46:43 1969