首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回函数Multiprocessing.Process的值。

返回函数Multiprocessing.Process的值。
EN

Stack Overflow用户
提问于 2014-04-28 19:08:32
回答 1查看 1.3K关注 0票数 1

我试图生成两个相同文件的校验和(在两个不同的目录中),并使用multiprocessing.Process()同时运行两个文件的校验和,而不是按顺序运行。

但是,当我在校验和生成函数上运行multiprocessing.Process()对象时,我得到了以下返回值:

代码语言:javascript
复制
<Process(Process-1, stopped)> 
<Process(Process-2, stopped)>

这些应该是校验和字符串的列表。

生成函数的返回语句是:

代码语言:javascript
复制
return chksum_list

非常基本,程序运行时运行良好。

如何检索通过multiprocessing.Process()对象处理的函数的返回值?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2014-04-28 19:17:12

文档在这个问题上相对较好;

管道

您可以通过管道与流程对象进行通信;

从医生那里:

代码语言:javascript
复制
from multiprocessing import Process, Pipe

def f(conn):
    conn.send([42, None, 'hello'])
    conn.close()

if __name__ == '__main__':
    parent_conn, child_conn = Pipe()
    p = Process(target=f, args=(child_conn,))
    p.start()
    print parent_conn.recv()   # prints "[42, None, 'hello']"
    p.join()

池与map

或者,您可以使用进程的Pool

代码语言:javascript
复制
pool = Pool(processes=4) 
returnvals = pool.map(f, range(10))

其中f是您的函数,它将作用于range(10)的每个成员。类似地,您可以传递包含对流程的输入的任何列表;

代码语言:javascript
复制
returnvals = pool.map(f, [input_to_process_1, input_to_process_2])    

在您的具体情况下,input_to_process_1/2可以是您正在执行校验和的文件的路径,而f是您的校验和函数。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23349285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档