Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#和ironpython CPU性能问题_C#_Performance_Visual Studio 2015_Cpu_Ironpython - Fatal编程技术网

c#和ironpython CPU性能问题

c#和ironpython CPU性能问题,c#,performance,visual-studio-2015,cpu,ironpython,C#,Performance,Visual Studio 2015,Cpu,Ironpython,我有一个非常奇怪的问题,我有一个c#应用程序(相当复杂),它调用Ironpython脚本,与c#代码交换一些数据。IronPython脚本执行一组计算,主要通过大约30条规则检查输入数据并收集每个规则的结果,这些结果作为结果集返回。在整个过程结束之前,每隔20秒重复调用此脚本约60次。 结果是CPU负载持续增加到100%,并一直保持到进程结束 现在,当脚本作为IronPython项目从visual studio调用或作为命令提示符(ipy)中的python脚本运行时,即使是作为使用Anacond

我有一个非常奇怪的问题,我有一个c#应用程序(相当复杂),它调用Ironpython脚本,与c#代码交换一些数据。IronPython脚本执行一组计算,主要通过大约30条规则检查输入数据并收集每个规则的结果,这些结果作为结果集返回。在整个过程结束之前,每隔20秒重复调用此脚本约60次。 结果是CPU负载持续增加到100%,并一直保持到进程结束

现在,当脚本作为IronPython项目从visual studio调用或作为命令提示符(ipy)中的python脚本运行时,即使是作为使用Anaconda和cPython的python脚本(而不是IronPython),对于上述所有情况,也要像过程一样重复调用,它运行正常,没有任何问题没有CPU负载超过一些峰值不超过50%

当我尝试用VisualStudio分析整个应用程序时,我得到了如下结果 IronPython.Runtime.FunctionCode+c__DisplayClass19_0.b__0,它似乎有大约500K个样本(包含、排除),并消耗大约90%的CPU负载

我知道我的问题有点具体,我的问题有点笼统,但太复杂了,无法分享更多。所以,如果有人觉得照片不完整,我道歉。。。我接受它,它不是

我想问社区的是,是否有其他人已经分阶段解决了类似的问题(类似的模式),并设法检查了一些事情,也许解决了问题,甚至解决了问题

对于那些可能想知道的人,我们已经重新构造并检查了IronPython代码,以避免不必要的调用或重复的(无休止的)循环等。此外,即使CPU加载到100%,脚本也会返回正确的结果,并且不会在运行中显示任何问题

最后,我们测试了从c#(动态对象、编译、普通py脚本和汇编dll)中调用IronPython脚本的所有已知和文档化方法,所有这些方法都有相同(或多或少)的CPU性能问题

我的感觉是.Net如何从C#中调用IronPython脚本是一个问题

非常感谢您阅读我的问题,更感谢您的回答

问候,,
IK

涉及到哪些类别和模式?如何承载ironpython环境?是否存在某种处理程序/字典/。。。把很多东西放在周围/活着/在记忆中?您是否会在每次执行时将规则添加到某些内容中,并且这些规则实际上执行了好几次?您好,谢谢您的评论。您好,谢谢您的评论。在IronPython脚本中,逻辑很简单,许多不同的参数集都会检查大约30条规则,例如,对于规则1,如果从集合1开始,参数23大于从集合2开始的参数34。。。然后rule_1_标记是8,rule_1_消息是Hello World,等等。是的,我们使用了很多字典,但内存不是问题,保持正常,但cpu负载是一个问题。确实如此,但如何确定是否还有剩余的内容,所有函数调用似乎都正常结束……我并不真正了解您关于IronPython环境的问题。让我澄清一下,版本是2.7.7,我使用它的类从C#创建了一个引擎,然后使用invoke加载脚本(py)、范围、py对象实例化,然后使用它和我调用函数的引擎。据我所知,从c#调用ironpython是一种非常标准的访问方式,不是吗?如果可以的话,请告诉我,我很感兴趣。python脚本占用了100%的CPU,这是很有趣的。如果您没有运行多线程应用程序,并且假设您没有使用单核处理器,那么这更像是占用处理器的环境问题(IDE/Debugger、.Net…)。如果您现在没有在发布模式下尝试运行相同的应用程序,并且没有附加调试程序,那么您可以尝试运行相同的应用程序。