使用ProcessPoolExecutor进行并行处理不起作用而且不返回错误-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用ProcessPoolExecutor进行并行处理不起作用而且不返回错误

2019-01-23 16:05:48 3427 1

目前我正在尝试加速我的模拟。我已经尝试过使用线程并且它有效。现在我想尝试使用并行进程来比较两种方式。那对我使用futures.ProcessPoolExecutor。当我开始我的脚本时,模拟时间被打印(它非常低),但我的程序不能正常工作。通常它应该生成几个文件,但不会生成它们。此外,没有错误消息。我已经在书本和互联网上对它进行了一些研究,但我无法弄清楚问题。

这是我的代码:

def main(setting):

cfg_path = generate(settings[setting])
run_simulation(cfg_path)

if name == '__main__':

settings = get_wrapper_input_json("Szenarioanalyse.json")
typ = "processes"
start = time.perf_counter()
if typ == "threads":
    with futures.ThreadPoolExecutor(cpu_count()-1) as e:
        e.map(main,settings)
elif typ == "processes":
    with futures.ProcessPoolExecutor(cpu_count()-1) as e:
        e.map(main,settings)
else:
    for setting in settings:
        main(setting)

print("Simulationtime: "+str(time.perf_counter()-1))
取消 提交回答
全部回答(1)
  • 一码平川MACHEL
    2019-07-17 23:26:41

    settings = get_wrapper_input_json("Szenarioanalyse.json") #get the settings
    parameters = {"Threads":True,"Processes":False,"Serial":False}

    def simulate(setting):

    cfg_path = generate(settings[setting])
    run_simulation(cfg_path)
    

    if name == '__main__':

    for key,value in parameters.items():
        if key == "Threads" and value == True:
            start_threads = time.perf_counter()
            with futures.ThreadPoolExecutor(10) as e:
                e.map(simulate,settings)
            print("Simulationtime "+key+": "+str(time.perf_counter()-start_threads))
        elif key == "Processes" and value == True:
            start_processes = time.perf_counter()
            pool = multiprocessing.Pool(multiprocessing.cpu_count())
            pool.map(simulate,settings)
            print("Simulationtime "+key+": "+str(time.perf_counter()-start_processes))
        elif key == "Serial" and value == True:
            start_serial = time.perf_counter()
            for setting in settings:
                simulate(setting)
            print("Simulationtime "+key+": "+str(time.perf_counter()-start_serial))
    
        #save_dataframe("Szenarioanalyse.json")
        #file_management()
    
    0 0
相关问答

1

回答

在数据库系统中,可以通过哪两种方式进行并行处理?

2022-09-20 15:39:57 20浏览量 回答数 1

1

回答

请问如何查看cgroup相关资源的使用情况?

2022-03-16 00:21:37 262浏览量 回答数 1

1

回答

在数据库上云方案选择的时候,存储为何使用云盘?

2021-12-17 13:53:35 223浏览量 回答数 1

1

回答

流处理中数据并行和任务并行是什么呢?

2021-12-07 21:23:49 169浏览量 回答数 1

1

回答

python自带的解释器CPython主要使用哪三种垃圾回收机制?

2021-11-01 23:28:16 103浏览量 回答数 1

1

回答

使用flask / python框架自动下载并执行可执行应用程序

2020-02-21 14:26:16 330浏览量 回答数 1

1

回答

在并行处理中使用awk获取语法错误

2020-01-06 16:29:20 229浏览量 回答数 1

1

回答

把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?

2019-12-31 15:35:32 421浏览量 回答数 1

1

回答

PHP处理时间的常用函数?(重点看函数的‘参数’和‘返回值’)

2019-11-18 14:50:58 677浏览量 回答数 1

1

回答

Ubuntu下使用slay命令结束某个用户的所有进程要怎么操作?

2018-01-10 15:24:49 2431浏览量 回答数 1
47
文章
723
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载