Я использую скрипт python с многопроцессорным модулем для одновременного запуска двух процессов. Каждый процесс занимает 4-5 минут. Я не могу запустить оба процесса одновременно. Ниже мой сценарий.Сценарий Python для одновременного запуска двух процессов
Мой сценарий запускается на сервере C, и он принимает два аргумента в качестве IP-адресов и принимает MTR с сервера A & B. A ----> B & B -----> A. Это должно произойти одновременно.
import paramiko
import os
import argparse
from multiprocessing import Process, Queue, Lock
parser = argparse.ArgumentParser()
parser.add_argument("ip1", help="Input the Source IP Address: ")
parser.add_argument("ip2", help="Input the Destination IP Address: ")
args = parser.parse_args()
class Myssh:
def __init__(self, iph, ipd):
self.iph = iph
self.ipd = ipd
self.cmd = "mtr --no-dns -rwc 300 %s" % ipd
def do(self):
count = 1
print "Starting Thread"
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.WarningPolicy())
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
key = os.path.expanduser(r'/home/rsharma/master004_rsa')
privkey = paramiko.RSAKey.from_private_key_file(key)
client.connect(self.iph, port=12001, username="master", pkey=privkey, look_for_keys=False)
stdin, stdout, stderr = client.exec_command(self.cmd)
for line in stdout:
print '...' + line.strip('\n')
client.close()
if __name__ == "__main__":
lock = Lock()
s1 = Myssh(args.ip1, args.ip2)
s2 = Myssh(args.ip2, args.ip1)
p1 = Process(target=s1.do())
p1.start()
p2 = Process(target=s2.do())
p2.start()
p1.join()
p2.join()
В настоящее время мой скрипт выполняет оба процесса последовательно не параллельно. Я хочу, чтобы он запускал обе команды параллельно и завершал через 5 минут в течение 10 минут. –
@timlyo Если вы отредактируете отступы (и вы действительно не должны в большинстве случаев), по крайней мере убедитесь, что вы не меняете цель кода. Жаль, что это было одобрено рецензентами, которые не обращают внимания. –