这是我的代码:
def sshRunCommand(self, command, print_stdout=True, print_stderr=True):
def run_exec_command_thread(command):
(stdin, stdout, stderr) = self.client.exec_command(command)
# Appends command to always change to the home directory first
x = "cd /home/" + self.username + "/; " + command
# Locally output an terminal-esque command look-a-like
if print_stdout:
print self.username + "@" + self.payloadd + ":" + x
exec_command_thread = Thread(
target=run_exec_command_thread,
args=(x,))
exec_command_thread.daemon = True
exec_command_thread.start()
while exec_command_thread.isAlive():
a = stdout.readlines()
for b in a:
print b
我想制作stdin
,stdout
和&嵌套函数stderr
中的run_exec_command_thread
将与其父函数共享。我正在使用Python 2.7,因此我无法使用nonlocal
。我不知道如何在这种特定情况下共享它们之间的变量,因为在这种情况下我不知道如何实现dict解决方案,因为对象类型是paramiko.channel.ChannelFile
。我希望有人能让我朝着正确的方向前进。
答案 0 :(得分:0)
这与嵌套函数无关。
在运行该函数之前,似乎不会创建stdin
等,即在新的Thread
中。
这意味着它应该可以使用跨线程方法的标准变量共享来解决,例如:使用Queue
- 请参阅此处:How to share a variable between 2 threads