Python 3学习 ——Python 多进程与编码

Posted jinzejun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 3学习 ——Python 多进程与编码相关的知识,希望对你有一定的参考价值。

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 2018
23 hello liufeiduo Fri Jun  8 11:15:46 2018
24 hello liufeiduo Fri Jun  8 11:15:46 2018
25 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     pass
12 
13 if __name__ == __main__:
14     info(33[32;1mmain process line33[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 line
24 module name: __main__
25 parent process: 7708     7708 是Pycharm 在电脑上分得的进程ID
26 process id: 13972
27 bob
28 module name: __mp_main__
29 parent process: 13972
30 process id: 6024
31 
32 ‘‘‘
jincheng relationship

 

 

 

 

 

 

二、Python2 和 Python3 的编码

  编码:基本概念很简单。首先,我们从一段信息即消息说起,消息以人类可以理解、易懂的表示存在。我打算将这种表示称为“明

文”(plain text)。对于说英语的人,纸张上打印的或屏幕上显示的英文单词都算作明文。

 

其次,我们需要能将明文表示的消息转成另外某种表示,我们还需要能将编码文本转回成明文。从明文到编码文本的转换称为“编码”,从编码

文本又转回成明文则为“解码”。

 

技术分享图片


以上是关于Python 3学习 ——Python 多进程与编码的主要内容,如果未能解决你的问题,请参考以下文章

python学习_day35_并发编程之多进程3

python学习笔记(多进程并发)

python学习笔记——多进程中共享内存Value & Array

python学习四十天(进程池)

python基础学习3

Python学习记录-多进程和多线程