0

我正在尝试在 python 中做一些非常简单的并行处理。我有一个数据列表,我想为每个元素计算完全相同的东西,并将其作为列表返回,所以我研究了一些可用的简单地图样式模块(https://wiki.python.org/moin /并行处理)。

我之前使用过 pprocess 模块,但这次似乎不起作用。我研究过使用 forkmap 或 forkfun,但我还没有真正找到一些关于如何使用它们的好例子。

您会推荐什么作为最容易使用的地图样式并行处理模块?最好有某种教程。

4

1 回答 1

0

首先,我不确定拥有多个线程是否会让你的程序运行得更快(但很想知道加速是什么)

我不会使用特殊的教程/模块,而只使用来自多处理导入进程、锁、队列的基本进程/线程的东西

将映射中的值输出到队列中(Queue())

  processess = []
  results_queue = Queue()
  for i in xrange(50):
    p = Process(target=MyMapFunction, args=tab[i*50:(i+1) * 50])
    processess.append(p)
    p.start()
  # Waiting and Reducing...
  all_key_values = {}
  for _ in xrange(50):
    for k, v in results_queue.get():
      all_key_values.setdefault(k, []).append(v)
  # Some sort of check that threads are done but they should be
  for p in processess:
    p.join()


def MyMapFunction(tab):
  return [(x, 2 * x) for x in tab]

我让你用我做 map 的方式做 reduce 并更正我快速写的糟糕的 i*50 : (i+1) * 50 这是我想在 Python 中进行多线程时使用的模式

于 2013-09-19T20:55:26.570 回答