python多处理:从主进程调用函数?

时间:2015-10-12 08:43:27

标签: python python-multiprocessing

我需要从子进程调用函数,但我不知道如何正确执行。 我的代码:

def GzipSend(pth):
    path, filename = os.path.split(pth)
    day0 = os.path.join(pth, 'daily.0')
    if os.path.exists(day0):
        try:
            tar = Popen("tar cPf - %s" %day0, shell=True, stderr=PIPE, stdout=PIPE)
            pigz = Popen("pigz -1 -kc", stdin=tar.stdout, shell=True, stdout=PIPE, stderr=PIPE)
            send = Popen("./s3cmd -c ./.s3cfg sync - s3://%s/%s/daily.0.tar.gz" %(bucket_name,filename), stdin=pigz.stdout, shell=True, stderr=PIPE, stdout=PIPE)
            tar.stdout.close()
            pigz.stdout.close()
            out, err = send.communicate()
            tar.wait()
            pigz.wait()
            return True
        except Exception, e:
            return False
    else:
        return False

def log(result, pth=None):
    if result:
        logger.info('path %s SUCCESS', pth)
    else:
        logger.info('path %s ERROR', pth) 

if __name__ == '__main__':
    all = []
    for i in SubDirPath(work_path):
            all.append(i)
    p = mp.Pool(processes=workers_num)
    for pth in all:
        p.apply_async(GzipSend, args=(pth, ), callback=partial(log, pth=pth))
    p.close()
    p.join()

我想添加函数"如果os.path.exists(day0)"假。 我的问题:我需要在主进程或子进程上创建函数?

我想要这样的事情:

 def GzipSend(pth):
    if:
        try:
            def func(param1)
        except
    else:
        def func(param2)

def log(result, pth=None):
....

if __name__ == '__main__':
...

0 个答案:

没有答案