python笔记本中的stdout / stderr

时间:2016-02-23 17:56:55

标签: python fortran ipython stdout jupyter

我正在使用python 3,最近我能够为FORTRAN求解器连接某些类型的优化问题(感谢堆栈溢出时的eryksun)。

正在出现的小问题是python notebook(jupyter)中的求解器输出没有显示出来。请注意,解算器返回正确的解决方案,但它不显示其进度或任何消息。虽然,如果从julia笔记本调用相同的FORTRAN求解器,我可以在julia笔记本中看到输出。求解器输出/消息只是对stdout的FORTRAN write()语句。

例如,这是朱莉娅笔记本显示的内容:

Hello World from Wrapper!

 Iter:   0  Nfun:   1  f1(x) =  24.20000         Eps =  116.4338    
 Iter:   1  Nfun:   2  f1(x) =  24.20000         Eps =  48.68118    
 Iter:   2  Nfun:   3  f1(x) =  6.307350         Eps =  7.505725    
 Iter:   3  Nfun:   4  f1(x) =  6.307350         Eps =  4.854666    
 Iter:   4  Nfun:   5  f1(x) =  3.580435         Eps = 0.1099409    
 Iter:   5  Nfun:   6  f1(x) =  3.580435         Eps = 0.8368376E-01   
 .....

求解器将所需的文件输出编号作为参数。对于FORTRAN,stdout为6。当我从python和julia调用求解器时,我将此参数设置为6。

它似乎与jupyter中的内核(python与julia)有关,但我无法找到一种简单直接的方式来查看此输出,这对于调试和验证目的至关重要。

任何提示或建议?

提前谢谢!

跟进:这是调用FORTRAN求解器的代码 - 它有31个参数。 参数num_outcalls(设置为6)和disp(对于详细模式设置为3)。 FORTRAN是加载的fortran库“solver_lib.so”

retval = FORTRAN.c_mpbngc(OptProb.dim.ctypes._as_parameter_,                    \

                          OptProb.X.ctypes._as_parameter_,                          \

                          OptProb.Tx.ctypes._as_parameter_,                         \

                          OptProb.Blox.ctypes._as_parameter_,                   \

                          OptProb.Bupx.ctypes._as_parameter_,                   \

                          OptProb.num_objfunc.ctypes._as_parameter_,                \

                          ct.byref(ct.c_int(OptProb.num_genconstr)),            \

                          ct.byref(ct.c_int(OptProb.num_linconstr)),            \

                          OptProb.Tlinconstr.ctypes._as_parameter_,             \

                          OptProb.Blo_linconstr.ctypes._as_parameter_,          \

                          OptProb.Bup_linconstr.ctypes._as_parameter_,          \

                          OptProb.CClinconstr.ctypes._as_parameter_,                \

                          OptProb.F.ctypes._as_parameter_,                      \

                          OptProb.ptrfuncFASGTYPE(OptProb.ptrObjFunc),          \

                          ct.byref(ct.c_double(OptProb.r_linsear)),             \

                          ct.byref(ct.c_int(OptProb.max_numcallsobjfun_linsear)),\

                          OptProb.Gam.ctypes._as_parameter_,                        \

                          ct.byref(ct.c_double(OptProb.tol)),                   \

                          ct.byref(ct.c_double(OptProb.tol_constrfeas)),            \

                          ct.byref(ct.c_int(OptProb.max_numsubgrads)),          \

                          OptProb.num_iters.ctypes._as_parameter_,              \

                          OptProb.max_numcallsobjfun.ctypes._as_parameter_,     \

                          OptProb.num_outcalls.ctypes._as_parameter_,           \

                          OptProb.disp.ctypes._as_parameter_,                   \

                          OptProb.err_type.ctypes._as_parameter_,               \

                          OptProb.IWORK.ctypes._as_parameter_,                  \

                          ct.byref(ct.c_int(OptProb.LIWORK)),                   \

                          OptProb.WORK.ctypes._as_parameter_,                   \

                          ct.byref(ct.c_int(OptProb.LWORK)),                        \

                          OptProb.ptrfuncFASGTYPE(OptProb.ptrObjFunc),          \

                          OptProb.USER.ctypes._as_parameter_) 

0 个答案:

没有答案