美文网首页
python中的多进程及结果返回

python中的多进程及结果返回

作者: conner是位好少年 | 来源:发表于2019-07-17 17:54 被阅读0次

大家都知道多进程的效率不是盖的,但是在python中多进程使用的时候还是有很多问题,除了怎么写之外,结果怎么拿,这些问题我们下面都需要讨论一下:

多进程的写法

方式一:使用process

for i in range(numofpage):
    p = Process(target=self.save_to_mongo,args=(task_list[i*1000:(i+1)*1000]))
    p.start()
    process_list.append(p)
for j in process_list:
    j.join()

第二种方式:使用pool

pool = Pool(processes=THTEADLINES)
for i in range(int(THTEADLINES)):
    pool.apply_async(get_task, args=())
pool.close()
pool.join()

join的方式可以使得你的线程是单一输出而不是输出了一堆 由父线程来整体控制
进程间如何进行结果回传
要使用进程的结果回传需要用到一个工具叫做:
manager 它是multiprocessing中的一个包
使用时的方式如下:
在声明进程之前需要做的事情是将manager实例化
方式如下:

manager = Manager()
return_list = manager.list()
pool = Pool(processes=len(BOHAO))
for host, port in BOHAO.items():
    pool.apply_async(getIpFromAdsl, args=(host, port, return_list))
pool.close()
pool.join()
return_list = list(return_list)

因为作为你的参数传递到你的主方法中 后面在你的主方法中调用就完事儿了,因为声明的是manager.list()所以后面就好list一样用就好了,追到源码除了list之外还有dict,用法都差不多,但是要记住这个是多进程中的list类,还是会有一些区别的。比如调用json的dumps方法就不行,需要你强制转换一下。

相关文章

  • python中的多进程及结果返回

    大家都知道多进程的效率不是盖的,但是在python中多进程使用的时候还是有很多问题,除了怎么写之外,结果怎么拿,这...

  • python进程

    python开启进程 父进程和子进程都会从fork()函数中得到一个返回值,在子进程中这个值一定是0,而父进程中是...

  • python并发编程

    1. python 单进程 用下载两个文件模拟单进程的问题。 运行结果 2. python 多进程 多进程可以有效...

  • 不论BAT大神,还是开发小担当都必须会的Python知识点

    Python函数示例:调用,缩进,参数和返回值 什么是Python中的函数? Python中的函数用于在程序中的多...

  • Python札记52_进程和线程2

    在之前的札记Python札记50_进程和线程1中介绍了进程、线程和子进程以及多进程的相关知识,本札记中重点介绍多线...

  • multiprocessing state

    数据共享 共享内存 server 这个服务进程是通过Manager返回的,可以包含Python对象,允许其他的进程...

  • python数据类型——数字

    整型 Integers 整型运算,加减乘: 在Python 2.7中,整型的运算结果只能返回整型,除法的结果也不例...

  • JVM监控

    1、jps jps命令:返回当前系统中的Java的进程号 -l:返回Java进程全路径 -q:...

  • IO模型的介绍

    概念介绍 同步 一个进程在等待另一个进程返回结果,如果另一个进程不返回,这个进程会一直等待,同步只是个状态 异步 ...

  • 2018-04-08

    fork()函数 计算机程序设计中的分叉函数。返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程...

网友评论

      本文标题:python中的多进程及结果返回

      本文链接:https://www.haomeiwen.com/subject/lhuclctx.html