摘要:普通的函數調用,調用一次,返回一次,但是調用一次,返回兩次,因為操作系統自動把當前進程稱為父進程復制了一份稱為子進程,然后,分別在父進程和子進程內返回。子進程永遠返回,而父進程返回子進程的。
一、Before
Python學習過程中,經常發現教程上講的函數在本機上會報錯:
AttributeError: "module" object has no attribute "***"
作為一個初學者,就會很懵逼的檢查: 1、有沒有寫錯函數名;2、是不是忘記引用這個函數了?3、檢查下這個插件模塊是否安裝了?...(如果你很認同,就說明你找對地方了)
本篇文章將為大家介紹學習Python過程中windows環境的“坑”。
二、正文由于和操作系統相關,所以這些“坑”來源于Python中的os模塊~~~
1、os.uname()python提供了查看當前操作系統的函數:
os.name() #output: #nt--Windows系統 #posix--Linux、Unix或Mac OS X
python還提供了一個查看操作系統詳細信息的函數,就是os.uname(),在mac環境下執行輸出如下結果。
os.uname() #output:(sysname, nodename, release, version, machine) #("Darwin", "iMac.local", "13.3.0", "Darwin Kernel Version 13.3.0: Tue Jun 3 21:27:35 PDT 2014; root:xnu-2422.110.17~1/RELEASE_X86_64", "x86_64")
但是在windows上,就會報錯沒有這個模塊。
解決方案:
(1)獲取hostname:socket.gethostname() 或 socket.gethostbyaddr(socket.gethostname())
(2)使用platform.uname()
import platform print platform.uname() #output: #(system="Windows", node="hongjie-PC",release="7", version="6.1.7601", machine="x86", processor="x86 Family 16 Model 6 Stepping 3, AuthenticAMD")2、os.fork()
os.fork() #新建進程 #output:pid
Unix/Linux操作系統提供了一個fork()系統調用,它非常特殊。普通的函數調用,調用一次,返回一次,但是fork()調用一次,返回兩次,因為操作系統自動把當前進程(稱為父進程)復制了一份(稱為子進程),然后,分別在父進程和子進程內返回。
子進程永遠返回0,而父進程返回子進程的ID。這樣做的理由是,一個父進程可以fork出很多子進程,所以,父進程要記下每個子進程的ID,而子進程只需要調用getppid()就可以拿到父進程的ID。
解決方案:
1、使用Python的multiprocessing模塊的Process來創建進程
import multiprocessing import os def runChildProcess(name): print "Run Child Process,pname = {} , pid = {}".format(name,os.getpid()) if __name__ == "__main__": print "Run Parent Process,pid = {}".format(os.getpid()) child = multiprocessing.Process(target=runChildProcess,args=("test",)) print "+"*20 child.start() child.join() print "-"*20
執行結果: Run Parent Process,pid = 5540 ++++++++++++++++++++ Run Child Process,pname = test , pid = 712 --------------------三、After
本文持續更新...
如果有錯誤、或建議,請務必聯系我,我會在看到消息后的第一時間改進!!!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40715.html
摘要:且本小白也親身經歷了整個從小白到爬蟲初入門的過程,因此就斗膽在上開一個欄目,以我的圖片爬蟲全實現過程為例,以期用更簡單清晰詳盡的方式來幫助更多小白應對更大多數的爬蟲實際問題。 前言: 一個月前,博主在學過python(一年前)、會一點網絡(能按F12)的情況下,憑著熱血和興趣,開始了pyth...
摘要:所以我們需要將打包成模塊提供給進行調用。安裝完之后我們執行,新建一個項目。需要注意的是編譯的版本需要與運行的版本一致,否則會出現無法調用的情況。 前言 近段時間學習了Rust,一直想著做點什么東西深入學習,因為是剛學習,很多地方都不熟悉,所以也就不能拿它來做編譯器這些,至于web開發,實際上我并不建議拿這個來學習一門語言,大概有幾個方面,一是web開發的套路無非也就那么幾個,對學習一門...
摘要:算了算了,不整游戲了,反正你們也不愛看今天來試試把頭條上扭腰上熱門的那些妹子爬一爬,不知道我頂不頂得住二準備工作使用的環境專業版要用的第三方模塊三大致流程鑒于你們不喜歡我啰嗦,但是流程呢,我還是要給你們寫出來,所以我就單獨把它列出來了。 ...
閱讀 891·2023-04-26 01:37
閱讀 3368·2021-09-02 15:40
閱讀 955·2021-09-01 10:29
閱讀 2887·2019-08-29 17:05
閱讀 3418·2019-08-28 18:02
閱讀 1181·2019-08-28 18:00
閱讀 1484·2019-08-26 11:00
閱讀 2603·2019-08-26 10:27