Python,读取许多文件并合并结果
作者:互联网
我可能会问一个非常基本的问题,但是我真的不知道如何在python中创建一个简单的并行应用程序.
我正在具有16个内核的计算机上运行脚本,我想高效地使用它们.我要读取16个大文件,我希望每个CPU读取一个文件,然后合并结果.
在这里,我举一个简单的例子,说明我想做什么:
parameter1_glob=[]
parameter2_glob[]
do cpu in arange(0,16):
parameter1,parameter2=loadtxt('file'+str(cpu)+'.dat',unpack=True)
parameter1_glob.append(parameter1)
parameter2_glob.append(parameter2)
我认为多处理模块可能会有所帮助,但我不明白如何将其应用于我想做的事情.
解决方法:
您要逐行合并吗?有时,协程对于I / O绑定的应用程序比经典的多任务处理更有趣.您可以链接生成器和协程以进行各种路由,合并和广播.惊叹于这个nice presentation by David Beazley.
您可以使用协程作为接收器(未经测试,请参阅dabeaz示例):
# A sink that just prints the lines
@coroutine
def printer():
while True:
line = (yield)
print line,
sources = [
open('file1'),
open('file2'),
open('file3'),
open('file4'),
open('file5'),
open('file6'),
open('file7'),
]
output = printer()
while sources:
for source in sources:
line = source.next()
if not line: # EOF
sources.remove(source)
source.close()
continue
output.send(line)
标签:parallel-processing,multiprocessing,python 来源: https://codeday.me/bug/20191201/2077503.html