相关疑难解决方法(0)

如何并行化一个简单的Python循环?

这可能是一个微不足道的问题,但我如何在python中并行化以下循环?

# setup output lists
output1 = list()
output2 = list()
output3 = list()

for j in range(0, 10):
    # calc individual parameter value
    parameter = j * offset
    # call the calculation
    out1, out2, out3 = calc_stuff(parameter = parameter)

    # put results into correct output list
    output1.append(out1)
    output2.append(out2)
    output3.append(out3)
Run Code Online (Sandbox Code Playgroud)

我知道如何在Python中启动单线程,但我不知道如何"收集"结果.

多个过程也可以 - 对于这种情况最简单的事情.我正在使用当前的Linux,但代码应该在Windows和Mac上运行.

并行化此代码的最简单方法是什么?

python parallel-processing

200
推荐指数
11
解决办法
25万
查看次数

使用tqdm与current.futures?

我有一个多线程函数,我想要一个使用状态栏tqdm。有没有一种简单的方法可以显示状态栏ThreadPoolExecutor?正是并行化部分使我感到困惑。

import concurrent.futures

def f(x):
    return f**2

my_iter = range(1000000)

def run(f,my_iter):
    with concurrent.futures.ThreadPoolExecutor() as executor:
        function = list(executor.map(f, my_iter))
    return results

run(f, my_iter) # wrap tqdr around this function?
Run Code Online (Sandbox Code Playgroud)

python concurrent.futures tqdm

23
推荐指数
3
解决办法
3180
查看次数

将 tqdm 与多重处理结合使用以实现多个进度条

我想监控不同进程的多个工作人员的进度。对于每个子进程,我都有自己的进度条,但它不能与ProcessPoolExecutor执行程序正常工作。

def main():
    with futures.ProcessPoolExecutor(max_workers=PROCESSES) as executor:
        fut_to_num = {}
        for i in range(PROCESSES):
            fut = executor.submit(execute_many_threads, i)
            fut_to_num[fut] = i

        for future in futures.as_completed(fut_to_num):
            r = future.result()
            # print('{} returned {}'.format(fut_to_num[future], r))
    print('\nDone!\n')


def execute_many_threads(n_pool=0):
    with futures.ThreadPoolExecutor(max_workers=THREADS) as executor:
        for i in range(THREADS):
            executor.submit(execute_thread, n_pool, i)
    return n_pool+1


def execute_thread(n_pool=0, n_thread=0):
    s = random.randint(1, 5)
    thread_num = n_pool*(PROCESSES-1) + n_thread

    progress = tqdm.tqdm(
        desc='#{:02d}'.format(thread_num),
        position=thread_num,
        total=10*s,
        leave=False,
    )
    # print('Executing {}: {}...'.format(thread_num, s))
    for i in range(s): …
Run Code Online (Sandbox Code Playgroud)

python concurrent.futures python-multiprocessing tqdm process-pool

7
推荐指数
0
解决办法
6045
查看次数

星图结合tqdm?

我正在做一些并行处理,如下所示:

with mp.Pool(8) as tmpPool:
        results = tmpPool.starmap(my_function, inputs)
Run Code Online (Sandbox Code Playgroud)

输入看起来像:[(1,0.2312),(5,0.52)...],即一个int和float的元组。

该代码运行良好,但我似乎无法将其包裹在加载栏(tqdm)上,例如可以使用imap方法完成,如下所示:

tqdm.tqdm(mp.imap(some_function,some_inputs))
Run Code Online (Sandbox Code Playgroud)

星图也可以做到吗?

谢谢!

python multiprocessing python-multiprocessing tqdm process-pool

7
推荐指数
3
解决办法
340
查看次数