簡體   English   中英

Python腳本可同時運行兩個進程

[英]Python script to run two processes simultaneously

我正在將Python腳本與多處理模塊一起使用,以同時運行2個進程。 每個過程需要4-5分鍾才能完成。 我無法同時運行兩個進程。 下面是我的腳本。

我的腳本在服務器C上運行,它接受兩個自變量作為IP地址,並從服務器A和B獲取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()

這段代碼說運行該函數,並將其返回的值設置為過程目標。 您需要更改這些行

p1 = Process(target=s1.do())
p2 = Process(target=s2.do())

p1 = Process(target=s1.do)
p2 = Process(target=s2.do)

函數后的括號在此處運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM