目錄一、進程同步二、為什么需要進程同步三、Python中實現進程同步四、多進程模擬同時搶票4.1通過鎖控制進程資源訪問總結盡管并發編程讓我們能更加充分的利用IO資源,但是也給我們帶來了新的問題:當多個進程使用同一份數據資源的時候,就會引發數據安全或順序混亂問題。一、進程同步多個進程同時執行,為了相互制約各進程對資源的訪問,使得各個進程的執行相互同步。在我的理解里,進程同步也算是進程間通訊(ipc)的一種手段。二、為什么需要進程同步多進程會引發搶占資源的問題
系統 2019-09-27 17:54:58 1926
《Python3爬蟲、數據清洗和可視化實戰》零一韓要賓黃園園著第九章:pandas數據清理9.1數據讀寫、選擇、整理和描述Pandas是用來數據清洗的Python庫,由于它的依賴庫很多,所以建議還是下載anaconda,里面內置了相關庫。9.1.1讀取CSV數據df=pd.read_csv(“csv_path”,delimiter=”,”,encoding=””)參數說明:“csv_path”,CSV文件路徑;delimiter=”,”:分隔方式;enco
系統 2019-09-27 17:54:37 1926
認識錯誤編寫的程序不能正常執行,或者執行的結果不是我們期望的,俗稱BUG,是程序員在開發時非常常見的,初學者常見錯誤的原因包括:手誤對已經學習過的知識理解還存在不足對語言還有需要學習和提升的內容在學習語言時,不僅要學會語言的語法,而且還要學會如何認識錯誤和解決錯誤的方法每一個程序員都是在不斷地修改錯誤中成長的常見錯誤:1>手誤2>將多條print寫在一行每行代碼負責完成一個動作3>縮進錯誤Python是一個格式非常嚴格的程序設計語言4>python2.x默
系統 2019-09-27 17:54:37 1926
類代碼:#-*-coding:gbk-*-importConfigParser,osclassINIFILE:def__init__(self,filename):self.filename=filenameself.initflag=Falseself.cfg=Noneself.readhandle=Noneself.writehandle=NonedefInit(self):self.cfg=ConfigParser.ConfigParser()try
系統 2019-09-27 17:54:17 1926
正則表達式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配。Python自1.5版本起增加了re模塊,它提供Perl風格的正則表達式模式。re模塊使Python語言擁有全部的正則表達式功能。compile函數根據一個模式字符串和可選的標志參數生成一個正則表達式對象。該對象擁有一系列方法用于正則表達式匹配和替換。re模塊也提供了與這些方法功能完全一致的函數,這些函數使用一個模式字符串做為它們的第一個參數。python正則表達式的使用(實
系統 2019-09-27 17:54:15 1926
本函數可以使用參數real+imag*j方式創建一個復數。也可以轉換一個字符串的數字為復數;或者轉換一個數字為復數。如果第一個參數是字符串,第二個參數不用填寫,會解釋這個字符串且返回復數;不過,第二個參數不能輸入字符串方式,否則會出錯。real和imag參數可以輸入數字,如果imag參數沒有輸入,默認它就是零值,這個函數就相當于int()或float()的功能。如果real和imag參數都輸入零,這個函數就返回0j。有了這個函數,就可以很方便地把一個列表轉
系統 2019-09-27 17:53:57 1926
OCR與Tesseract介紹將圖片翻譯成文字一般被稱為光學文字識別(OpticalCharacterRecognition,OCR)。可以實現OCR的底層庫并不多,目前很多庫都是使用共同的幾個底層OCR庫,或者是在上面進行定制。Tesseract是一個OCR庫,目前由Google贊助(Google也是一家以OCR和機器學習技術聞名于世的公司)。Tesseract是目前公認最優秀、最精確的開源OCR系統。除了極高的精確度,Tesseract也具有很高的靈活
系統 2019-09-27 17:53:50 1926
函數的嵌套在Python編程語言中,在函數體內創建另外一個函數(對象,因為Python一切皆對象,函數其實也是對象)是完全合法的,這種函數叫做內部/嵌套函數。例子:#coding:utf-8defouter():definner():print("isInnerMethod")print("IsouterMethod")inner()#調用outer函數outer()#調用outer()的內部函數,報錯#inner()運行結果:IsouterMethodi
系統 2019-09-27 17:52:56 1926
在上一篇文章中,我們講了如何在linux上用python寫一個守護進程。主要原理是利用linux的fork函數來創建一個進程,然后退出父進程運行,生成的子進程就會成為一個守護進程。細心觀察的可能會發現,這個守護進程的運行身份是執行這個程序的用戶,如果把這個守護程序加入到系統的服務項,那么這個守護程序的執行身份應該是root。一個情況出現了,root的權限比較大,如果通過這個root身份的守護程序來進行操作,危險性是比較大的。一種好的辦法是生成一個身份為ro
系統 2019-09-27 17:52:32 1926
一、首先二叉樹的定義:classTreeNode:def__init__(self,x):self.val=xself.left=Noneself.right=None構建一棵二叉樹:classNode(object):def__init__(self,val):self.val=valself.lchild=Noneself.rchild=NoneclassTree(object):def__init__(self):self.root=Noneself
系統 2019-09-27 17:52:24 1926
Python語言與Perl,C和Java等語言有許多相似之處,也有一定的差異性,以下是Python語言獲取文件后綴名和文件名的方法:#Python獲取文件后綴名的方法importos.pathdeffile_extension(path):returnos.path.splitext(path)[1]printfile_extension('/py/a.py')輸出:.py#Python獲取目錄和文件名importos.pathdeffile_extens
系統 2019-09-27 17:52:22 1926
#下載一個網頁importrequestsimportreurl='https://www.biquge5200.cc/14_14621/'#模擬瀏覽器發送http請求response=requests.get(url)#編碼方式response.encoding='utf-8',如果下載下來的網頁內容有中文亂碼現象就需要加上這一句話#網頁源碼html=response.text#[0]取列表下第0個元素.#eg:title的輸出結果為:['斗神狂飆無彈窗
系統 2019-09-27 17:52:18 1926
我們首先來看下python的全部代碼,大家可以直接復制后測試:#-*-encoding:utf-8-*-importloggingimportwmiimportosimporttimefromConfigParserimportConfigParserimportsmtplibfromemail.mime.textimportMIMETextimportsocketfromdatetimeimportdatetimeimportreimportsysimp
系統 2019-09-27 17:52:12 1926
Python實現Mysql數據統計的實例代碼如下所示:importpymysqlimportxlwtexcel=xlwt.Workbook(encoding='utf-8')sheet=excel.add_sheet('Mysql數據庫')sheet.write(0,0,'庫名')sheet.write(0,1,'表名')sheet.write(0,2,'數據條數')db=pymysql.connect('192.168.1.74','root','123
系統 2019-09-27 17:51:52 1926
2019-09-18-21:11:24(初學者不會學博客,望大家見諒見諒)今天學的內容是有關list.、dict、set集合的使用方法和注意事項list和dict在循環中不可刪,而且list在迭代輸出時進行刪除是會導致索引跟著改變所以一般list不在循環過程中進行刪除list和dict要進行刪除時,應該把要刪除的記錄到另一個列表中,然后在進行刪除深淺拷貝:淺拷貝只拷貝第一層的內容,而深拷貝是全部內容都進行了拷貝下面是總結的內容:一.重要知識點1.str.j
系統 2019-09-27 17:51:29 1926