我有一段代码如下:
for x in range(10):
for v in f(x):
print(v)
我想将它并行化,所以我可能会这样做
ex = ProcessPollExecutor()
for vs in ex.map(f, range(10)):
for v in vs:
print(v)
但是,f
是一个生成器,因此上面的代码实际上不起作用。
我可以更改f
以返回列表,但此列表太大,无法放入内存
理想情况下,我希望pyspark中有类似flatMap
的东西。
但是直接使用pyspark就像sc.parallelize(range(10)).flatMap(f).toLocalIterator()
似乎不起作用。至少我不能让它在初始列表如此短的情况下使用多个处理器。
(我在Why is this simple Spark program not utlizing multiple cores?中尝试了所有的东西,但没有成功。)
我可能可以自己使用队列来运行一些东西,但我想知道是否有一种在Python并发框架中并行这些代码的方法
最后,我用
multiprocessing
:PyStreams编写了自己的小型库它通过缓冲提供了相当高效的flapmap支持,并支持其他类似Spark的功能,如:
相关问题 更多 >
编程相关推荐