相关疑难解决方法(0)

Python多处理和共享计数器

我遇到了多处理模块的麻烦.我正在使用一个带有map方法的工作池来从大量文件加载数据,并且每个文件都使用自定义函数分析数据.每次处理文件时,我都希望更新一个计数器,以便我可以跟踪要处理的文件数量.这是示例代码:

def analyze_data( args ):
    # do something 
    counter += 1
    print counter


if __name__ == '__main__':

    list_of_files = os.listdir(some_directory)

    global counter
    counter = 0

    p = Pool()
    p.map(analyze_data, list_of_files)
Run Code Online (Sandbox Code Playgroud)

我无法找到解决方案.

python multiprocessing

57
推荐指数
4
解决办法
5万
查看次数

在进程之间共享变量

我有一个下载器功能,可以并行下载多个文件.我用multiprocessing.Pool.map_async它来下载同一文件的不同块.我想显示下载的状态栏.为此,我需要知道已经下载的总字节数(total_bytes_dl).

    pool = multiprocessing.Pool(processes)
    mapObj = pool.map_async(f, args)

    while not mapObj.ready():
        status = r"%.2f MB / %.2f MB" % (total_bytes_dl / 1024.0 / 1024.0, filesize / 1024.0 / 1024.0,)
        status = status + chr(8)*(len(status)+1)
        print status,
        time.sleep(0.5)
Run Code Online (Sandbox Code Playgroud)

有没有办法设置一个将在所有这些进程和主进程之间共享的变量,因此每个进程都可以附加刚刚下载的字节数量?

python ctypes map multiprocessing

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

multiprocessing ×2

python ×2

ctypes ×1

map ×1