首页 新闻 会员 周边 捐助

[python]请问频繁调用子程序如何改善性能?

0
悬赏园豆:10 [已解决问题] 解决于 2018-10-07 13:02

大家好!有一个main.py和几千个sub_x.py文件,main.py会频繁调用这几千个sub_x.py文件并获得返回结果。
但是现在问题是调用子程序的次数太频繁,导致main.py运行起来非常慢。
查看了耗时的地方,主要是下面这几个地方消耗时间:
{built-in method builtins.exec}
subprocess.py:372(run)
{built-in method _codecs.utf_8_encode}
{built-in method _pickle.load}
subprocess.py:586(init)
subprocess.py:952(_execute_child)
{built-in method _winapi.CreateProcess}
请问有什么方法可以在调用子程序的时候节约时间吗?

main.py的内容如下:

cmdLst = ['sub_1','sub_2','sub_3','sub_4']#实际上是有几千个sub_x.py文件,这里只列出4个

for i in range(len(cmdLst)):
#创建命令行内容
commandLine = 'python ' + cmdLst[i] + '.py'
#执行命令
proc = subprocess.run(commandLine.split(),stdout = subprocess.PIPE, stderr = subprocess.PIPE)
#获取子程序返回的内容
stdResult = proc.stdout.decode()

sub_x.py的内容如下:

一系列操作,获得stdLine

输出stdLine

print(stdLine)

芽衣的主页 芽衣 | 菜鸟二级 | 园豆:384
提问于:2018-09-30 21:48
< >
分享
最佳答案
0

首先看下硬件处理能力,然后代码考虑下优化,各种循环看看有没有提高性能的地方,考虑使用多线程试试,或者把调用很多的脚本压力分散开

收获园豆:10
DanBrown | 小虾三级 |园豆:1321 | 2018-10-01 09:53

你好!多线程的话会不会影响到sub_x.py文件执行的顺序?因为main.py要按照顺序执行sub_x.py文件的。
“调用很多的脚本压力分散开” 不是很懂,可不可以举一个例子?

芽衣 | 园豆:384 (菜鸟二级) | 2018-10-01 19:58

@芽衣: main.py要按照顺序执行sub_x.py文件,那么久不建议使用多线程了,因为必须要等某一项功能完成,再开始下一项,没办法使用多线程,同时去处理几项任务,压力分散开,比如说你要跑10个任务,我可能每小时跑一个,这种解决方式,看看主程序逻辑是否有优化的地方,或者提高服务器硬件

DanBrown | 园豆:1321 (小虾三级) | 2018-10-02 17:24

@DanBrown: 谢谢你的热心回答~!

芽衣 | 园豆:384 (菜鸟二级) | 2018-10-07 13:02
其他回答(2)
0

改C++
萨德撒多撒啊

DiggingDeeply | 园豆:338 (菜鸟二级) | 2018-10-08 14:53
0

可以使用协程啊,绝对的省时,而且占用系统资源还小

有球必硬 | 园豆:212 (菜鸟二级) | 2018-10-09 15:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册