我需要从子进程调用函数,但我不知道如何正确执行。 我的代码:
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__':
...