python 2.7.5: 运行 整个函数在后台
python 2.7.5: run a whole function in background
我是 python 的初学者。我想在后台 运行 整个函数(因为它可能需要一段时间甚至失败)。
这是函数:
def backup(str):
command = barman_bin + " backup " + str
log_maif.info("Lancement d'un backup full:")
log_maif.info(command)
p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = p.communicate()
if p.returncode == 0:
for line in output[0].decode(encoding='utf-8').split('\n'):
log_maif.info(line)
else:
for line in output[0].decode(encoding='utf-8').split('\n'):
log_maif.error(line)
log_maif.info("Fin du backup full")
return output
我想运行这个函数在后台进入循环:
for host in list_hosts_sans_doublon:
backup(host) # <-- how to run the whole function in background ?
在 ksh 中,我会写类似 backup $host &
的东西,并备份一个以 $host 作为参数的函数。
您正在寻找的是 运行 与我理解的不同线程中的函数。为此,您需要使用 python 线程模块。
这就是您开始讨论的方式:
import threading
def backup(mystring):
print(mystring)
host="hello"
x = threading.Thread(target=backup, [host])
x.start()
Do what ever you want after this and the thread will run separately.
我是 python 的初学者。我想在后台 运行 整个函数(因为它可能需要一段时间甚至失败)。 这是函数:
def backup(str):
command = barman_bin + " backup " + str
log_maif.info("Lancement d'un backup full:")
log_maif.info(command)
p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = p.communicate()
if p.returncode == 0:
for line in output[0].decode(encoding='utf-8').split('\n'):
log_maif.info(line)
else:
for line in output[0].decode(encoding='utf-8').split('\n'):
log_maif.error(line)
log_maif.info("Fin du backup full")
return output
我想运行这个函数在后台进入循环:
for host in list_hosts_sans_doublon:
backup(host) # <-- how to run the whole function in background ?
在 ksh 中,我会写类似 backup $host &
的东西,并备份一个以 $host 作为参数的函数。
您正在寻找的是 运行 与我理解的不同线程中的函数。为此,您需要使用 python 线程模块。 这就是您开始讨论的方式:
import threading
def backup(mystring):
print(mystring)
host="hello"
x = threading.Thread(target=backup, [host])
x.start()
Do what ever you want after this and the thread will run separately.