Skip to content
Snippets Groups Projects
David Beniamine's avatar
a4f8eb1a
History

Parallel run and write in python

Do a parallel imap_unordered with numProc processes

  • func should always return something
  • Tasks should be an iterable which items are acceptable args for func
  • The output of func is loggedgradually in outFileName
  • If bar is true, show a progress bar
  • If errFileName is not None, all exceptions produced by func are intercepted and gradually logged in errFileName
  • numProc sets the number of process to use
  • if ordered is true, results are outputed in the same order as tasks
  • chunksize : chunkszise for imap
  • if debug is set to true, errors are also printed to stderr

How to use

from pyParallelRunAndWrite import parallelRunAndWrite as prw
# The following dependencies are only useful for testFunc
import os
from time import sleep
from random import randint

def testFunc(arg):
    ret=str(arg)+str(os.getpid())
    sleep(randint(2,5))
    if(randint(0,100)%2 ==0):
        raise Exception("COUCOU"+ret)
    return ret

prw.parallelRunAndWrite(testFunc, range(5), "testplop",  numProc=2, errFileName="errors")