我有一个大型python脚本(一个行数大于1500的经济模型),我想在几个cpu核上并行执行。到目前为止,我发现的所有多处理示例都是关于简单函数的,但不是整个脚本。你能告诉我怎么做吗? 谢谢!你知道吗
说明:该模型生成一个多变量的数据集作为输出。每个结果与其他模型运行随机不同。因此,我必须经常运行模型,直到达到某个偏差度量(比如50次)。模型的输入总是相同的,但输出却不同。你知道吗
编辑,明白了:
import os
from multiprocessing import Pool
n_cores = 4
n_iterations = 5
def run_process(process):
os.system('python myscript.py')
if __name__ == '__main__':
p = Pool(n_cores)
p.map(run_process, range(n_iterations))
如果你想使用一个工人池,我通常会做以下几点。你知道吗
更清楚地说,您的脚本将成为MyFunctionInParallel的主体。这意味着您需要稍微更改脚本,以便依赖于输入的变量(即每个模型)可以作为参数传递给MyFunctionInParallel。然后,根据您希望对每次运行得到的结果执行的操作,您可以使用上面所示的队列,也可以将结果写入文件中。如果您使用队列,这意味着您希望能够在并行执行结束时(即在同一脚本执行中)检索数据,我建议使用字典作为将结果存储在队列中的一种方式,因为它们对所包含的数据非常灵活。另一方面,如果你希望与其他用户/应用程序共享结果,我想把结果写在文件中会更好。为了产生有意义的输出,您必须小心所有工作人员的并发写入,但是为每个模型编写一个文件也可以。你知道吗
对于代码的主要部分,num是您将要运行的模型的数量,data和info是特定于(或不特定于)每个模型的一些参数,numProcs是您希望启动的进程的数量。对于starmap的调用,它基本上会将列表理解中的参数映射到MyFunctionInParallel的每个调用,从而允许每个执行都有不同的输入参数。你知道吗
相关问题 更多 >
编程相关推荐