2 回答

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
為什么不嘗試一下線程概念呢?
import pysftp as sftp
from threading import Thread
cnopts = sftp.CnOpts()
cnopts.hostkeys = None
handle = sftp.Connection('10.0.2.10',username='kali', password='root', cnopts=cnopts)
def exec(cmd):
? ? #handle will be taken from the prev declaration
? ? handle.execute(cmd)
list_cmds = ['/tmp/doThis', '/tmp/doThat']
for cmd in list_cmds:
? ? Thread(target=exec, args=[cmd]).start()

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
execute
一種選擇是使用該模塊為每個(gè)語句啟動(dòng)一個(gè)新進(jìn)程multiprocessing
(。您使用Process
構(gòu)造函數(shù)創(chuàng)建一個(gè)進(jìn)程,為其提供要執(zhí)行的目標(biāo)函數(shù)和任何參數(shù),并告訴它使用該start
方法啟動(dòng)其函數(shù)。如果您想等待進(jìn)程完成,請(qǐng)使用join
該函數(shù)的方法。您的代碼可能如下所示(確保您的語句包含在一個(gè)if __name__ == '__main__':
塊中):
import pysftp as sftp
from multiprocessing import Process
if __name__ == '__main__':
? ? cnopts = sftp.CnOpts()
? ? cnopts.hostkeys = None
? ? handle = sftp.Connection(
? ? ? ? '10.0.2.10',
? ? ? ? username='kali',
? ? ? ? password='root',
? ? ? ? cnopts=cnopts
? ? )
? ? # Create processes
? ? p1 = Process(target=handle.execute, args=('/tmp/doThis',))
? ? p2 = Process(target=handle.execute, args=('/tmp/doThat',))
? ? # Tell processes to start
? ? p1.start()
? ? p2.start()
? ? # If you want to, then wait for both processes to finish
? ? p1.join()
? ? p2.join()
添加回答
舉報(bào)