我正在尝试在 python 中做一些非常简单的并行处理。我有一个数据列表,我想为每个元素计算完全相同的东西,并将其作为列表返回,所以我研究了一些可用的简单地图样式模块(https://wiki.python.org/moin /并行处理)。
我之前使用过 pprocess 模块,但这次似乎不起作用。我研究过使用 forkmap 或 forkfun,但我还没有真正找到一些关于如何使用它们的好例子。
您会推荐什么作为最容易使用的地图样式并行处理模块?最好有某种教程。
我正在尝试在 python 中做一些非常简单的并行处理。我有一个数据列表,我想为每个元素计算完全相同的东西,并将其作为列表返回,所以我研究了一些可用的简单地图样式模块(https://wiki.python.org/moin /并行处理)。
我之前使用过 pprocess 模块,但这次似乎不起作用。我研究过使用 forkmap 或 forkfun,但我还没有真正找到一些关于如何使用它们的好例子。
您会推荐什么作为最容易使用的地图样式并行处理模块?最好有某种教程。
首先,我不确定拥有多个线程是否会让你的程序运行得更快(但很想知道加速是什么)
我不会使用特殊的教程/模块,而只使用来自多处理导入进程、锁、队列的基本进程/线程的东西
将映射中的值输出到队列中(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 中进行多线程时使用的模式