使用多个内核同时处理多个数据文件



我有多个数据文件,我使用python Pandas库处理。每个文件都是一个一个处理的,我看任务管理器的时候只用了一个逻辑处理器(在~95%,其余都在5%以内)

有没有办法同时处理数据文件?如果是这样,有没有办法利用其他逻辑处理器来做到这一点?

(欢迎编辑)

如果您的文件名在列表中,则可以使用以下代码:

from multiprocessing import Process
def YourCode(filename, otherdata):
    # Do your stuff
if __name__ == '__main__':
    #Post process files in parallel
    ListOfFilenames = ['file1','file2', ..., 'file1000']
    ListOfProcesses = []
    Processors = 20 # n of processors you want to use
    #Divide the list of files in 'n of processors' Parts
    Parts = [ListOfFilenames[i:i + Processors] for i in xrange(0, len(ListOfFilenames), Processors)]
    for part in Parts:
        for f in part:
            p = multiprocessing.Process(target=YourCode, args=(f, otherdata))
            p.start()
            ListOfProcesses.append(p)
        for p in ListOfProcesses:
            p.join()

您可以在不同的线程或不同的进程中处理不同的文件。

python的好处是它的框架为你提供了工具来做到这一点:

from multiprocessing import Process
def process_panda(filename):
    # this function will be started in a different process
    process_panda_import()
    write_results()
if __name__ == '__main__':
    p1 = Process(target=process_panda, args=('file1',))
    # start process 1
    p1.start() 
    p2 = Process(target=process_panda, args=('file2',))
    # starts process 2
    p2.start() 
    # waits if process 2 is finished
    p2.join()  
    # waits if process 1 is finished
    p1.join()  

该程序将启动 2 个子进程,可用于处理您的文件。当然,你可以用线程做类似的事情。

您可以在此处找到文档:https://docs.python.org/2/library/multiprocessing.html

在这里:

https://pymotw.com/2/threading/

相关内容

  • 没有找到相关文章

最新更新