我试图生成两个相同文件的校验和(在两个不同的目录中),并使用multiprocessing.Process()同时运行两个文件的校验和,而不是按顺序运行。
但是,当我在校验和生成函数上运行multiprocessing.Process()对象时,我得到了以下返回值:
<Process(Process-1, stopped)>
<Process(Process-2, stopped)>这些应该是校验和字符串的列表。
生成函数的返回语句是:
return chksum_list非常基本,程序运行时运行良好。
如何检索通过multiprocessing.Process()对象处理的函数的返回值?
谢谢。
发布于 2014-04-28 19:17:12
文档在这个问题上相对较好;
管道
您可以通过管道与流程对象进行通信;
从医生那里:
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:
pool = Pool(processes=4)
returnvals = pool.map(f, range(10))其中f是您的函数,它将作用于range(10)的每个成员。类似地,您可以传递包含对流程的输入的任何列表;
returnvals = pool.map(f, [input_to_process_1, input_to_process_2]) 在您的具体情况下,input_to_process_1/2可以是您正在执行校验和的文件的路径,而f是您的校验和函数。
https://stackoverflow.com/questions/23349285
复制相似问题