编程语言
首页 > 编程语言> > Python,读取许多文件并合并结果

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