使用子流程。调用
在python中,我试图运行一个perl脚本,它在远程机器上运行一个代码来获取一些信息。
我在机器A上有两个脚本—python和perl。python脚本使用子流程调用perl脚本。通过在循环中向其传递IP地址来调用
方法。两个脚本都运行得很好。
但是,perl脚本是按串行顺序执行的(一个接一个的IP)。
# python code
def foo():
print()
IPs = ["198.168.1.2","198.168.3.4"]
for ip in IPs:
proc = call("perl script.pl '%s'" %ip, shell=True, stdin=PIPE)
foo()
# perl script
#!/usr/bin/html" target="_blank">perl
sub bar($)
{
//Code that ssh's to a remote-machine and gets required information
}
print(bar($ARGV[0]),"\n");
print("Sleeping for 15 sec\n");
sleep(15);
print("Done\n");
实际行为-
因此,为这两个IP运行perl脚本总共需要30秒。
预期行为-
因此,为两个IP执行perl脚本所花费的时间大致相同。
这可以通过子流程实现。Popen
。这将在不阻塞主线程的情况下运行进程。您的应用程序将如下所示:
def foo():
print()
IPs = ["198.168.1.2","198.168.3.4"]
procs = []
for ip in IPs:
proc = subproces.Popen(["perl", "script.pl", ip], shell=True, stdin=PIPE)
procs.append(proc)
# wait for all the processes to finish
for proc in procs:
proc.wait()
foo()
问题内容: 我尝试执行以下操作(我的jar和python文件都在同一目录中): 和 无论是工作过。因此,我当时以为应该改用Jython,但我认为必须有一种更简单的方法来通过python执行jar文件。 你知道我可能做错了什么吗?或者,是否还有其他网站可以进一步研究我的问题? 问题答案: 我将以这种方式使用子流程: 但是,如果你有一个正确配置的,你应该能够直接运行jar,因为你写的。 那么,这正是您
问题内容: 我正在尝试使用Linux crontab执行python脚本。我想每10分钟运行一次此脚本。 我找到了很多解决方案,但都无济于事。例如:在/etc/cron.d中编辑anacron或使用。我将此行放在文件的末尾,但它没有任何改变。我需要重启任何服务吗? 我必须编辑哪个文件来配置它? 提前致谢 这是脚本。 问题答案: 只需使用并按照此处的教程操作即可。 请参阅第3点,以获取有关如何指定频
问题内容: 我有要从Python脚本调用的Perl脚本。我一直在寻找,并没有成功。我基本上是试图调用向Perl脚本发送1变量的方法,但是不需要Perl脚本的输出,因为它是一个自包含程序。 到目前为止,我想出的是: 只有刚刚开始的Python编程,所以我确定以上内容完全是胡说八道。任何帮助将非常感激。 问题答案: 如果您只想打开通往perl解释器的管道,那么您的方向正确。我认为您唯一缺少的是perl
问题内容: 我阅读是一种选择,但这是最好的方法吗? 我需要该脚本的答案,因此在某些情况下,我必须阅读脚本的返回,尽管在其他情况下,我可能会从文本文件中读取该脚本的返回。 无论如何,是从Java调用Perl脚本的好方法吗?我应该注意,我正在开发Java Web应用程序,因此这里的安全性是一个问题。 问题答案: 您可以使用或使用Process API 。使用Process API,您可以获取脚本的输出
我想从. dat文件恢复MSSQL数据库。 通过在Windows PowerShell上调用以下命令/语句或将其保存在一个文件夹中,我成功地做到了这一点。bat文件并运行文件本身: 但是,由于我需要在不同的数据库中多次重复此指令,因此我希望使用Python在循环中执行此操作。我尝试使用子流程模块复制上述指令。没有成功。 我的Python代码如下所示: 在Windows PowerShell上运行此
问题内容: 我需要从我的Python脚本执行该脚本。 可能吗?该脚本会生成一些输出,并写入一些文件。如何访问这些文件?我尝试了子流程调用功能,但没有成功。 应用程序“ bar”还引用了一些库,除了输出外,它还创建了文件“ bar.xml”。我如何访问这些文件?只是通过使用open()? 谢谢, 编辑: Python运行时的错误仅是这一行。 问题答案: 要执行外部程序,请执行以下操作: 是的,假设您