arcmap下的多进程脚本
程序员文章站
2023-12-26 17:25:33
...
arcmap中多为CPU密集运算,最好的方式为使用多进程而不是多线程(IO密集)
问题:python多进程无法正常在arcmap下正常开启
原因:arcmap下信息处理时,调用的时内置的py内核,但是一个arcmap进程只能调用一个py内核。
解决:使用外置的py内核,为保证兼容性,用2.7X 32位,必须把工作代码跟main
函数分开。
实例代码:
代码简单实现了数据的输入,并调用了arcpy。
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 12 19:12:59 2020
@author: zonggongban HGH
"""
import arcpy
import os
import sys
def worker_function(x):
name = os.path.join('E:/p', str(x) + '.txt')
with open(name, 'w') as f:
f.write(sys.version)
arcpy.AddMessage(999)
print(arcpy.GetMessages())
return name
将上述脚本命名为worker.py
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 12 19:12:59 2020
@author: zonggongban HGH
"""
import os
import arcpy
import multiprocessing
import time
import worker
def main():
'''
调用外置py内核
'''
multiprocessing.set_executable('G:/anaconda27/pythonw.exe')
pool = multiprocessing.Pool()
time.sleep(0.0001)
for i in [1, 2]:
pool.apply_async(work.worker_function, (i,)) # args are passed as a list
pool.close()
pool.join()
if __name__=='__main__':
asters = arcpy.GetParameterAsText(0)
main()
在主函数调用work.py
参考
can-multiprocessing-with-arcpy-be-run-in-a-script-tool
Create a script tool that uses multiprocessing
推荐阅读
-
arcmap下的多进程脚本
-
利用PHP脚本在Linux下用md5函数加密字符串的方法,linuxmd5
-
获取同一网段下所有机器MAC地址的shell脚本
-
aix下实现goldengate随os启动而自动启动的脚本
-
Oracle 下的开发日积月累_Oracle应用_脚本之家
-
javascript下搜索子字符串的的实现代码(脚本之家修正版)_javascript技巧
-
ubuntu下让python脚本可直接运行的实现方法
-
Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份
-
Linux下安装Mysql多实例作为数据备份服务器实现多主到一从多实例的备份
-
Python实现TCP协议下的端口映射功能的脚本程序示例