gpt4 book ai didi

python - 执行python代码而不用每次都调用import语句

转载 作者:太空宇宙 更新时间:2023-11-03 12:42:10 25 4
gpt4 key购买 nike

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

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()

客户端.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 - 执行python代码而不用每次都调用import语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6687363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com