【发布时间】:2014-10-22 20:52:21
【问题描述】:
我正在研究来自gitHub 的关于分布式处理的code。我要感谢 eliben 提供的这个好 post。我已经阅读了他的解释,但有一些黑点。据我了解,该代码用于在多台机器/客户端中分配任务。我的问题是:
我最基本的问题是工作分配到不同机器的位置是什么?
为什么 main 函数中有 if else 语句?
-
让我以更笼统的方式开始这个问题。我认为我们通常在特定的块(独立内存部分)中启动
Process,而不是像这样一次传递所有块:chunksize = int(math.ceil(len(HugeList) / float(nprocs))) for i in range(nprocs): p = Process( target = myWorker, # This is my worker args=(HugeList[chunksize * i:chunksize * (i + 1)], HUGEQ) processes.append(p) p.start()在这个简单的例子中,我们有
nprocs进程。每个进程都会启动函数myWorker的一个实例,该实例作用于指定的块。我的问题是:
- 对于在每个块中工作的每个进程,我们有多少线程?
-
现在查看
gitHub代码我想了解mp_factorizer?更具体地说,在这个函数中,我们没有块,而是一个巨大的队列 (shared_job_q)。这个巨大的队列由最大大小为 43 的子列表组成。这个队列被传递到factorizer_worker。我们通过get获取这些子列表并将它们传递给串行工作者。我知道我们需要这个队列来在客户端之间共享数据。我的问题是:
- 我们是否为每个
nprocs(=8) 进程调用factorizer_worker函数的实例? - 每个进程工作的数据的哪一部分? (一般情况下,我们有 8 个进程和 43 个块。)
- 每个进程有多少个线程?
- 是否从每个进程线程调用
get函数?
- 我们是否为每个
感谢您的宝贵时间。
【问题讨论】:
标签: python multithreading multiprocessing distributed parallel-python