PYTHON多进程编码结束之进程池POOL

结束昨晚开始的测试。

最后一个POOL。

A,使用POOL的返回结果

#coding: utf-8
import multiprocessing
import time

def func(msg):
    print 'msg:', msg
    time.sleep(3)
    print 'end'
    return 'done', msg

if __name__ == '__main__':
    pool = multiprocessing.Pool(processes=3)
    result = []
    for i in xrange(4):
        msg = 'hello %d' %(i)
        result.append(pool.apply_async(func, (msg, )))

    print 'Mark..Mark..Mark...'
    pool.close()
    pool.join()
    print 'Sub-process(es) done.'
    for res in result:
        print ':::', res.get()

 

B,多个进程池

#coding: utf-8
import multiprocessing
import time, random, os

def Lee():
    print 'Run task Lee-%s' % (os.getpid())
    start = time.time()
    time.sleep(random.random() * 10)
    end = time.time()
    print 'Task Lee, runs %0.2f seconds.' % (end - start)

def Marlon():
    print 'Run task Marlon-%s' % (os.getpid())
    start = time.time()
    time.sleep(random.random() * 10)
    end = time.time()
    print 'Task Marlon, runs %0.2f seconds.' % (end - start)

def Allen():
    print 'Run task Allen-%s' % (os.getpid())
    start = time.time()
    time.sleep(random.random() * 10)
    end = time.time()
    print 'Task Allen, runs %0.2f seconds.' % (end - start)

def Frank():
    print 'Run task Frank-%s' % (os.getpid())
    start = time.time()
    time.sleep(random.random() * 10)
    end = time.time()
    print 'Task Frank, runs %0.2f seconds.' % (end - start)

if __name__ == '__main__':
    function_list = [Lee, Marlon, Allen, Frank]
    print 'parent process %s' % (os.getpid())

    pool = multiprocessing.Pool(4)
    for func in function_list:
        pool.apply_async(func)

    print 'Waiting for all subprocess done...'
    pool.close()
    pool.join()
    print 'All subprocesses done.'

 

截图:

时间: 2024-08-06 23:14:11

PYTHON多进程编码结束之进程池POOL的相关文章

第十五章 Python多进程与多线程

15.1 multiprocessing multiprocessing是多进程模块,多进程提供了任务并发性,能充分利用多核处理器.避免了GIL(全局解释锁)对资源的影响. 有以下常用类: 类 描述 Process(group=None, target=None, name=None, args=(), kwargs={}) 派生一个进程对象,然后调用start()方法启动 Pool(processes=None, initializer=None, initargs=()) 返回一个进程池对象

python进程池详细剖析教程

python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要实现调用外部程序的功能,python的psutil模块是更好的选择,它不仅支持subprocess提供的功能,而且还能对当前主机或者启动的外部程序进行监控,比如获取网络.cpu.内存等信息使用情况,在做一些自动化运维工作时支持的更加全面.multiprocessing是python的多进程模块,主要

Python并发编程之线程池/进程池

引言 Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码,但是当项目达到一定的规模,频繁创建/销毁进程或者线程是非常消耗资源的,这个时候我们就要编写自己的线程池/进程池,以空间换时间.但从Python3.2开始,标准库为我们提供了concurrent.futures模块,它提供了ThreadPoolExecutor和ProcessPoolExecutor两个类,实现了对threading和multiprocessing的进一步抽象,对

Python自定义进程池实例分析【生产者、消费者模型问题】_python

本文实例分析了Python自定义进程池.分享给大家供大家参考,具体如下: 代码说明一切: #encoding=utf-8 #author: walker #date: 2014-05-21 #function: 自定义进程池遍历目录下文件 from multiprocessing import Process, Queue, Lock import time, os #消费者 class Consumer(Process): def __init__(self, queue, ioLock):

python 进程池失效原因

问题描述 python 进程池失效原因 from multiprocessing import Pool import os, time, random def process_pool_program_(): def long_time_task(name): print 'Run task %s (%s)...' % (name, os.getpid()) start = time.time() time.sleep(random.random() * 3) end = time.time(

编程-python问题求解,怎么在程序中结束整个进程?

问题描述 python问题求解,怎么在程序中结束整个进程? tb=myblock()def my_block(): tb.Start(True) tb.Wait()t=threading.Thread(target=my_block)t.setDaemon(True)t.start()start_time=time.time()while True: print ""susccess"" print time.time() if int(time.time()-st

Python多进程multiprocessing使用示例

来源:http://outofmemory.cn/code-snippet/2267/Python-duojincheng-multiprocessing-usage-example 来源:http://www.jb51.net/article/67116.htm 来源:http://blog.csdn.net/qdx411324962/article/details/46810421 来源:http://www.lxway.com/4488626156.htm 由于要做把一个多线程改成多进程,

Python多进程教程

Python2.6版本中新添了multiprocessing模块.它最初由Jesse Noller和Richard Oudkerk定义在PEP 371中.就像你能通过threading模块衍生线程一样,multiprocessing 模块允许你衍生进程.这里用到的思想:因为你现在能衍生进程,所以你能够避免使用全局解释器锁(GIL),并且充分利用机器的多个处理器. 多进程包也包含一些根本不在threading 模块中的API.比如:有一个灵活的Pool类能让你在多个输入下并行化地执行函数.我们将在

【Python之旅】第六篇(六):Python多进程使用

  关于进程与线程的对比,下面的解释非常好的说明了这两者的区别:     这里主要说明关于Python多进程的下面几点: 1 2 3 4 5 6 7 1.多进程的使用方法 2.进程间的通信之multiprocessing.Manager()使用 3.Python进程池 (1)比较简单的例子 (2)多个进程多次并发的情况 (3)验证apply.async方法是非阻塞的 (4)验证apply.async中的get()方法是阻塞的 1.多进程的使用方法     直接给出下面程序代码及注释: 1 2 3