私は、同時に2つのプロセスを実行するために、マルチプロセッシングモジュールを持つpythonスクリプトを使用しています。各プロセスは完了するのに4〜5分かかります。私は両方のプロセスを同時に実行することができません。以下は私のスクリプトです。2つのプロセスを同時に実行するPythonスクリプト
スクリプトはサーバーCで実行され、IPアドレスとして2つの引数をとり、サーバーAから&のMTRを受け取ります。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インデントを編集する場合(そして、ほとんどの場合はそうすべきではありません)、少なくともコードの意図を変更しないようにしてください。これは、これは注意を払わない査読者によって承認されたことは残念です。 –