python 只执行一次的语句_每次执行python代码而不调用import语句

这是一个示例python脚本.如何从命令行多次运行此脚本,以便每次都不调用导入行? import语句加载时间太长.

import arcpy

val = arcpy.GetCellValue_management("D:\dem-merged\lidar_wsg84", "-95.090174910630012 29.973962146120652", "")

print str(val)

解决方法:

如果您严格要求“从其他程序调用此脚本.通过在命令行上发出’python script.py’”,则此问题无法解决.

如果你只想做一次“重导入”,你必须只启动一次python脚本.

考虑启动一个守护进程,它将启动一次,然后处理来自其他程序的调用.这样,所有初始化只需要进行一次,接下来的调用将很快.

如果你将你的python代码分成两部分(守护进程的第一部分,守护进程客户端的第二部分),你将能够从另一个程序调用’python client.py’,但实际的计算将由守护进程执行,这是开始只有一次.

例如:

daemon.py

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,import,command-line

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值