我想对一个大文件的行进行一些计算,我发现读取行所花费的时间少于5%,计算每行所花费的时间为95%。
然后我发现 df <- data.frame(a = 1:10, b = 11:20)
似乎很适合我的需求。
但是,它需要使用asyncio.Queue
或concurrent.futures.ThreadPoolExecutor
来实现并行。没有它们,ProcessPoolExecutor
是单线程的。
我找不到一个示例来知道如何编写它。 大多数示例仅在消费者中打印,而不会返回任何值。
请给我写个例子吗?
为进行演示,生产者将10个数字的多行放入队列中,这5个使用方拆分了该行并计算单行的总和和平均值,并且main()将总和和平均值相加以在其中打印两个结果结束。
默认示例为单线程。只需将asyncio
更改为await asyncio.sleep(sleep_for)
。
然后,仅显示“ worker-0”。 CPU%始终小于100%。
for i in range(10000000):pass
此外,我希望代码向后兼容Python 3.5.3,因为PyPy看起来更快。