相关疑难解决方法(0)

控制台中的文本进度条

有一个很好的方法来做到以下几点?

我写了一个简单的控制台应用程序,使用ftplib从FTP服务器上传和下载文件.

每次下载一些数据块时,我都想更新文本进度条,即使它只是一个数字.

但我不想删除所有打印到控制台的文本.(执行"清除"然后打印更新的百分比.)

python console updating progress

388
推荐指数
15
解决办法
29万
查看次数

并行化词典理解

我有以下功能和字典理解:

def function(name, params):
    results = fits.open(name)
    <do something more to results>
    return results

dictionary = {name: function(name, params) for name in nameList}
Run Code Online (Sandbox Code Playgroud)

并希望将其并行化.有什么简单的方法吗?

这里,我看到该multiprocessing模块可以使用,但无法理解如何使它将我的结果传递给我的字典.

注意:如果可能,请给出一个可以应用于任何返回结果的函数的答案.

注2:主要是操纵拟合文件并将结果分配给一个类

UPDATE

所以这里最终对我有用(来自@code_onkel回答):

def function(name, params):
    results = fits.open(name)
    <do something more to results>
    return results

def function_wrapper(args):
    return function(*args)

params = [...,...,..., etc]    

p = multiprocessing..Pool(processes=(max([2, mproc.cpu_count() // 10])))
args_generator = ((name, params) for name in names)

dictionary = dict(zip(names, p.map(function_wrapper, args_generator)))
Run Code Online (Sandbox Code Playgroud)

使用tqdm只能部分工作,因为我可以使用我的自定义栏,因为tqdm恢复到只有迭代的默认栏.

python dictionary multiprocessing python-2.7

3
推荐指数
1
解决办法
1033
查看次数

键盘中断与python的多处理池和映射功能

我发现这篇文章解释了如何使用 ctr+c 终止正在运行的多处理代码。以下代码完全正常工作(可以使用 ctrl+c 终止它):

#!/usr/bin/env python

# Copyright (c) 2011 John Reese
# Licensed under the MIT License

import multiprocessing
import os
import signal
import time

def init_worker():
    signal.signal(signal.SIGINT, signal.SIG_IGN)

def run_worker():
    time.sleep(15)

def main():
    print "Initializng 5 workers"
    pool = multiprocessing.Pool(5, init_worker)

    print "Starting 3 jobs of 15 seconds each"
    for i in range(3):
        pool.apply_async(run_worker)

    try:
        print "Waiting 10 seconds"
        time.sleep(10)

    except KeyboardInterrupt:
        print "Caught KeyboardInterrupt, terminating workers"
        pool.terminate()
        pool.join()

    else:
        print "Quitting normally"
        pool.close()
        pool.join() …
Run Code Online (Sandbox Code Playgroud)

python python-multiprocessing

2
推荐指数
1
解决办法
5439
查看次数