我正在调用这个python文件:
import sys
if __name__ == "__main__":
print sys.argv[1]
从PHP这样:
$param = "hello";
$result = shell_exec("python /path/to/python/file.py " . $param);
echo $result;
运行PHP文件时显示的是hello。但是,当我将pyCuda(2012.1)导入到python文件中时,输出不再返回给PHP,即使在从bash运行命令时仍然显示它。这是pyCuda导入的python文件:
from pycuda import driver as drv
from pycuda import tools
from pycuda import autoinit
import sys
if __name__ == "__main__":
print sys.argv[1]
为什么导入pyCuda时PHP不再接收输出?在PHP中读取此python文件的输出的最佳方法是什么?
非常感谢!
答案 0 :(得分:1)
pycuda.autoinit
注册一个atexit
自动处理程序来清理它创建的CUDA上下文,以便python代码正常退出。这可能是在没有刷新标准输出的情况下终止应用程序,因此输出永远不会被发出。
所以要么尝试显式刷新stdout:
import sys
print sys.argv[1]
sys.stdout.flush()
或者不要使用pycuda.autoinit
并自行处理设置和下拉驱动程序API上下文。