import arcpy
val = arcpy.GetCellValue_management("D:\dem-merged\lidar_wsg84", "-95.090174910630012 29.973962146120652", "")
print str(val)
import arcpy
val = arcpy.GetCellValue_management("D:\dem-merged\lidar_wsg84", "-95.090174910630012 29.973962146120652", "")
print str(val)
import socket
#import arcpy
def actual_work():
#val = arcpy.GetCellValue_management("D:\dem-merged\lidar_wsg84", "-95.090174910630012 29.973962146120652", "")
#return str(val)
return 'dummy_reply'
def main():
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
try:
sock.bind( ('127.0.0.1', 6666) )
while True:
data, addr = sock.recvfrom( 4096 )
reply = actual_work()
sock.sendto(reply, addr)
except KeyboardInterrupt:
pass
finally:
sock.close()
if __name__ == '__main__':
main()
client.py
import socket
import sys
def main():
sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
sock.settimeout(1)
try:
sock.sendto('', ('127.0.0.1', 6666))
reply, _ = sock.recvfrom(4096)
print reply
except socket.timeout:
sys.exit(1)
finally:
sock.close()
if __name__ == '__main__':
main()
python -O
from arcpy import <what you need>
这可能会使事情稍微快一些。
import a
import a
它只会被导入一次。因此,与其多次运行脚本,也许你可以将其更改为一次性制作所有副本。
如果你必须多次运行这个特定的脚本,我认为你无法避免导入并且每次都必须进行导入。
简单。
使用cmd
模块编写自己的简单shell,并使用runpy
模块来运行你的脚本。在shell程序中导入你的大型模块,并通过init_globals将其传递给程序。
查看http://pypi.python.org/pypi/cmd2/上的文档,你应该很清楚如何编写自己的简单shell,即使它只有两个命令,一个用于编辑文件,一个用于运行文件。
runpy是Python标准库的一部分http://docs.python.org/library/runpy.html,你可能不需要它,但知道导入和模块加载机制可以被你的命令shell控制甚至修改是很有用的。
你是否曾经想过当你执行像 var1 = 25
这样的语句时,“var1”这个名字去了哪里?当你稍后执行 print var1
时,Python 如何找到 var1
所指的内容?答案是这些名字在一个字典中,如果你理解 Python 字典的含义和功能,它似乎是将名称与值连接起来的显而易见的解决方案。但还有更多。Python 可以有很多命名空间,你可以像操作字典一样操作这些命名空间。阅读这篇文章http://www.diveintopython.net/html_processing/locals_and_globals.html 以了解 locals
和 globals
命名空间。这里还有另一篇讨论http://lucumr.pocoo.org/2011/2/1/exec-in-python/,可以帮助你更好地理解。
尝试使用exec
,就像在这个问题globals and locals in python exec()中一样,直到你理解它的工作原理。然后构建您的命令行壳以在开始时导入模块,并编写脚本仅在模块不可用时才导入该模块。当从您的shell内运行脚本时,该模块已经存在。
根据您的使用情况(从Ruby on Rails Web服务调用),最简单的方法之一是使用XML-RPC。使用Python标准库中的SimpleXMLRPCServer,然后使用Ruby客户端(Ruby似乎在标准库中有xmlrpc)。