標籤:lap title 相同 line 電腦 共用 存在 size ima
Python 學習——Python 編碼
寫此部落格 是為了激勵自己,並且將自己的心得以及遇到的問題與人分享
一、進程
1.概述
multiprocessing 包是 Python 中的多流程管理組件。與 thread.Threading 類似,可以利用 multiprocessing 對象來建立一個進程。該 Processing 對象與 Thread 對象的用法相同,也有 start() run() join() 的方法。具體使用看下面代碼實現。使用這些 API 的時候有如下幾點注意事項:
- 十分有必要對每個 Process 對象調用 join() 方法,阻止進程成為殭屍進程的一個手段。在多線程中由於只有一個進程,所以不需要採用這種手段。
- 兩個進程之間不能夠共用資料,如果想共用資料要有一個第三方來對兩者進行溝通共用。優先使用 Pipe 和 Queue ,避免使用 Lock / Event / Semaphone / Condition 等同步方式。
- Windows 系統下,要想啟動一個子進程,必須加上 If __name__ == "__main__": ,進程相關的要寫在這句下面。
1 #author:"LFD" 2 #date: 2018/6/8 3 from multiprocessing import Process 4 import time 5 6 def f(name): 7 time.sleep(1) 8 print(‘hello‘,name,time.ctime()) 9 10 if __name__ == "__main__":11 p_list = []12 for i in range(3):13 p = Process(target=f,args=(‘liufeiduo‘,)) # 建立進程14 p_list.append(p)15 p.start()16 for p in p_list:17 p.join()18 19 print(‘jincheng end!‘)20 21 ‘‘‘ # 運行結果:22 hello liufeiduo Fri Jun 8 11:15:46 201823 hello liufeiduo Fri Jun 8 11:15:46 201824 hello liufeiduo Fri Jun 8 11:15:46 201825 jincheng end!26 ‘‘‘
creat jincheng_1
上面是通過方法實現多進程;
下面是通過調用類實現多進程;
1 from multiprocessing import Process 2 import time 3 4 class MyProcess(Process): 5 def __init__(self,name): 6 super(MyProcess,self).__init__() 7 self.name = name 8 def run(self): 9 time.sleep(1)10 print(‘hello‘,self.name,time.ctime())11 12 if __name__ == ‘__main__‘:13 p_list = []14 for i in range(3):15 p = MyProcess(‘liufeiduo‘)16 p.start()17 p_list.append(p)18 19 for p in p_list:20 p.join()21 22 print(‘end‘)
creat jincheng_2
2.進程關係
1 from multiprocessing import Process 2 import os,time 3 4 def info(title): 5 print(title) 6 print(‘module name:‘,__name__) 7 print(‘parent process:‘,os.getppid()) 8 print(‘process id:‘,os.getpid()) 9 10 def f(name):11 pass12 13 if __name__ == ‘__main__‘:14 info(‘\033[32;1mmain process line\033[0m‘)15 time.sleep(5)16 p = Process(target=info,args=(‘bob‘,))17 p.start()18 p.join()19 20 21 22 ‘‘‘ 運行結果:23 main process line24 module name: __main__25 parent process: 7708 7708 是Pycharm 在電腦上分得的進程ID26 process id: 1397227 bob28 module name: __mp_main__29 parent process: 1397230 process id: 602431 32 ‘‘‘
jincheng relationship
二、Python2 和 Python3 的編碼
編碼:基本概念很簡單。首先,我們從一段資訊即訊息說起,訊息以人類可以理解、易懂的表示存在。我打算將這種表示稱為“明
文”(plain text)。對於說英語的人,紙張上列印的或螢幕上顯示的英文單詞都算作明文。
其次,我們需要能將明文表示的訊息轉成另外某種表示,我們還需要能將編碼文本轉回成明文。從明文到編碼文本的轉換稱為“編碼”,從編碼
文本又轉回成明文則為“解碼”。
Python 3學習 ——Python 多進程與編碼