Python 3學習 ——Python 多進程與編碼

來源:互聯網
上載者:User

標籤: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 多進程與編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.