通过 Python 的子进程模块运行 mysqldump 缓慢且冗长
@cost_time
def dbdump_all():
"导出数据库所有数据至当前目录下以年月日命名的sql文件"
filename=datetime.datetime.now().strftime("%Y-%m-%d")
cmd="""mysqldump -u root -pzhoubt --opt --quick --database search > ./%s.sql"""%filename
args=shlex.split(cmd)
p=subprocess.Popen(args)
#stdout, stderr = p.communicate()
#print stdout,stderr
print "已将数据库表结构和数据导出到%s"%filename
我在子进程中使用 mysqldump 命令,即使我注释掉了 stdout, stderr = p.communicate(),它也会输出大量有关导出数据的信息。线。它也非常慢,即使我在 shell 中尝试过相同的命令,而且它非常快速和简洁。在使用 subprocess
时,如何避免所有冗长的内容,并加快速度,更像直接从 shell 运行它?
@cost_time
def dbdump_all():
"导出数据库所有数据至当前目录下以年月日命名的sql文件"
filename=datetime.datetime.now().strftime("%Y-%m-%d")
cmd="""mysqldump -u root -pzhoubt --opt --quick --database search > ./%s.sql"""%filename
args=shlex.split(cmd)
p=subprocess.Popen(args)
#stdout, stderr = p.communicate()
#print stdout,stderr
print "已将数据库表结构和数据导出到%s"%filename
I use the mysqldump
command in a subprocess, and it outputs a lot of information about the exported data, even if I comment out the stdout, stderr = p.communicate()
line. It's also very slow, even though I've tried the same command in a shell and it's very quick and succinct. How can I avoid all the verbosity when using subprocess
, and speed up the time it takes to be more like running it directly from a shell?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
终于我明白了,
关键是我们os.waitpid等待mysql处理,
另一点是当你使用 shell 时 cmd 是一个字符串而不是列表
finally i got it,
the key is us os.waitpid to wait mysql processing,
another point is when you use shell the cmd is a string not a list