0704 Process继承实现多进程、Pool进程池,及Pool实现多进程实现复制文件

通过继承的方式,实现Process多进程

 1 from multiprocessing import Process
 2 import time
 3
 4 class MyNewProcess(Process):
 5     def run(self):
 6         for i in range(10):
 7             print("----run----")
 8             time.sleep(1)
 9
10
11 if __name__ == "__main__":
12     p = MyNewProcess()
13
14     p.start()        # Process 中的 start 方法会主动调用 run 方法
15 for i in range(10): print("---main---") time.sleep(1)

Pool 进程池实现多进程

 1 import time
 2 from multiprocessing import Pool
 3
 4 def worker():
 5     for i in range(10):
 6         print("From worker %s"%i)
 7         time.sleep(0.5)
 8
 9 def foo():
10     for i in range(10):
11         print("From foo %s"%i)
12         time.sleep(0.5)
13
14 def bar():
15     for i in range(10):
16         print("From bar %s"%i)
17         time.sleep(0.5)
18
19 if __name__ == "__main__":
20     pool = Pool(3)            # 创建三个 进程
21     pool.apply_async(worker)
22     pool.apply_async(foo)
23     pool.apply_async(bar)
24
25     pool.close()                  # 关闭进程池,禁止添加任务
26     pool.join()          # 等待子进程结束后,主进程才往下走
27     print("Is done...")
28
29
30
31 # process and Pool 最后都是调用 fork
32 # 通常情况下,主进程一半用来等低啊,,,,真正的任务子进程中执行

利用Pool进程池实现简单的文件复制

 1 import os
 2 import time
 3 from multiprocessing import Pool
 4
 5 def copyFile(oldPath, newPath, fileName):
 6     print("%s 准备复制中。。。"%fileName)
 7     with open("%s\%s"%(oldPath, fileName), ‘r‘) as fr, open("%s\%s"%(newPath, fileName), ‘w‘) as fw:
 8         for line in fr:
 9             fw.write(line)
10     time.sleep(1)
11
12
13 if __name__ == "__main__":
14     oldPath = r"file"
15     newPath = r"file-副本"
16
17     os.mkdir(newPath)
18
19     pool = Pool(5)
20
21     fileList = os.listdir(oldPath)
22
23     for fileName in fileList:
24         pool.apply_async(copyFile, (oldPath, newPath, fileName))
25
26     pool.close()
27
28     pool.join()
29
30     print("文件复制完成....")
时间: 2024-10-18 22:07:12

0704 Process继承实现多进程、Pool进程池,及Pool实现多进程实现复制文件的相关文章

Python 多进程和进程池

一,前言 进程:是程序,资源集合,进程控制块组成,是最小的资源单位 特点:就对Python而言,可以实现真正的并行效果 缺点:进程切换很容易消耗cpu资源,进程之间的通信相对线程来说比较麻烦 线程:是进程中最小的执行单位. 特点无法利用多核,无法实现真正意义上是并行效果. 优点:对于IO密集型的操作可以很好利用IO阻塞的时间 二,多进程 2.1 multiprocessing模块介绍 在上一节多线程中讲到,由于GIL的原因,多线程无法利用多核优势,如果想要充分地使用多核CPU的资源,在pytho

38. Python 多进程Manager 进程池

强大的Manager模块 上一节实现的数据共享的方式只有两种结构Value和Array. Python中提供了强大的Manager模块,专门用来做数据共享. 他支持的类型非常多,包括:Value.Araay.list.dict.Queue.Lock等. 以下例子: import multiprocessing def worker(d,l):     l += range(11, 16)     for i in xrange(1, 6):         key = "key{0}"

multiprocessing模块的多进程与进程池

multiprocessing模块的Process方法 可以利用Proces方法在一个主进程中创建几个子进程 from multiprocessing import Process import time def f1(name): time.sleep(2) print('Hell %s' % name) def f2(age): time.sleep(2) print('Hell %s' % age) if __name__ == "__main__": p = Process(t

Python程序中的进程操作-进程池(multiprocess.Pool)

Python程序中的进程操作-进程池(multiprocess.Pool) 一.进程池 为什么要有进程池?进程池的概念. 在程序实际处理问题过程中,忙时会有成千上万的任务需要被执行,闲时可能只有零星任务.那么在成千上万个任务需要被执行的时候,我们就需要去创建成千上万个进程么?首先,创建进程需要消耗时间,销毁进程也需要消耗时间.第二即便开启了成千上万的进程,操作系统也不能让他们同时执行,这样反而会影响程序的效率.因此我们不能无限制的根据任务开启或者结束进程.那么我们要怎么做呢? 在这里,要给大家介

python3多进程和进程池

#一个程序运行起来之后,代码+用到的资源称之为进程,它是操作系统分配资源的基本单位,不仅可以通过线程完成多任务,进程也是可以的#进程之间是相互独立的#cpu密集的时候适合用多进程 #多进程并发 import multiprocessing from multiprocessing import Pool import time def test1(): for i in range(10): time.sleep(1) print('test', i) def test2(): for i in

多进程和进程池

from multiprocessing import Process import os # 子进程要执行的代码 def run_proc(name): print 'Run child process %s (%s)...' % (name, os.getpid()) if __name__=='__main__': print 'Parent process %s.' % os.getpid() p = Process(target=run_proc, args=('test',)) pr

python多进程操作-进程池

在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,10几个还好,但如果是上百个,上千个目标,手动的去限制进程数量却又太过繁琐,这时候进程池Pool发挥作用的时候就到了. Pool可以提供指定数量的进程,供用户调用,当有新的请求提交到pool中时,如果池还没有满,那么就会创建一个新的进程用来执行该请求:但如果池中的进程数已经达到规定

【python小随笔】进程池 multiprocessing.Pool的简单实现与踩过的坑

#导入进程模块 import multiprocessing #创建进程池 坑:一定要在循环外面创建进程池,不然会一直创建 pool = multiprocessing.Pool(30) for Size in Size_list: index,Size_Asin = Size.xpath('./@value')[0].split(",") Size_Asin_url = "https://www.amazon.cn/dp/%sth=1&psc=1" % S

多进程,进程池。

1.多进程的调用 1.1 multiprocessing调用 1 from multiprocessing import Process 2 import time 3 def f(name): 4 time.sleep(1) 5 print('hello', name,time.ctime()) 6 7 if __name__ == '__main__': 8 p_list=[] 9 for i in range(3): 10 p = Process(target=f, args=('alvi