python.exe đã ngừng hoạt động


9

Một kịch bản python đã được viết cách đây khoảng 18 tháng bởi một người đã rời đi. Nó tạo ra các đầu ra cần thiết sau đó. Tôi đã được yêu cầu chạy lại nhưng với các đầu vào dữ liệu (độ phân giải tốt hơn) khác nhau. Bộ dữ liệu đầu vào đã được chia thành 20 tập hợp con gồm khoảng 2.700 điểm dữ liệu mỗi bộ. Tuy nhiên, tập lệnh gặp sự cố ("python.exe đã ngừng hoạt động") sau khi khoảng 300 điểm dữ liệu đã được xử lý (phạm vi 295 đến 306 và KHÔNG phải lúc nào cũng thất bại trong cùng một bản ghi).

Như cũ (ish), kịch bản được viết bằng cách sử dụng arcgisscripting và không arcpy. Nói chung, nó sử dụng các con trỏ sau:

  1. Đối với một điểm nhất định, hãy tính khoảng cách chi phí (sử dụng gp.CostDistance_sa) với thời gian di chuyển là 60 phút.
  2. Gọi gp.ExtractValuesToPoints_sa để trích xuất tất cả các giá trị riêng lẻ tại mỗi điểm dữ liệu và xuất một lớp tính năng cho cơ sở dữ liệu địa lý tệp.
  3. Đọc lớp tính năng được tạo ở b) ở trên và ghi các giá trị vào tệp CSV (bỏ qua bất kỳ điểm nào với "Không có dữ liệu" (giá trị -9999)).

Lặp lại 1, 2 và 3 cho tất cả các điểm dữ liệu còn lại trong tệp đầu vào.

Thời gian xử lý là khoảng. Trung bình 1 phút cho mỗi điểm dữ liệu. Dưới đây là một số thông số kỹ thuật có liên quan:

  • PC có CPU Intel i7-2720QM lõi tứ tốc độ 2.20GHz với RAM 8GB chạy Windows 7 (64 bit).
  • Phiên bản Python là 2.6.6 (shell cũng ghi "[MSC v, 1500 32 bit (Intel)] trên win32).
  • ArcMap 10.0 (SP4) cũng được cài đặt.

Tôi đã thử chạy nó trên một PC khác (cho đến nay mà không gặp sự cố). Hiện tại công việc đang chạy thành công (nhưng chậm hơn) trên một PC cũ và đã đạt tới kỷ lục 419 mà không gặp sự cố. Các thông số kỹ thuật có liên quan cho máy này là:

  • Bộ xử lý Intel Core 2 DUO E7500 tốc độ 2,93 GHz với RAM 4 GB và Windows 7 64 bit.
  • Phiên bản Python 2.5.1 (shell cũng ghi "[MSC v, 1310 32 bit (Intel)] trên win32).
  • ArcMap 9.3 được cài đặt (không đề cập đến bất kỳ Gói dịch vụ nào).

Ai đó có thể cung cấp một số lời khuyên về lý do tại sao kịch bản dường như hoạt động trong một thời gian sau đó sụp đổ và làm thế nào để giải quyết nó?

Việc một PC khác xuất hiện (cho đến nay) để xử lý tập lệnh gợi ý một cái gì đó "môi trường".


Là một bản cập nhật, PC chạy ARCGIS 9.3 vẫn đang xử lý thành công dữ liệu và đã đạt tới 1.300 điểm dữ liệu được xử lý (và vẫn còn tiếp tục). Một đồng nghiệp cũng chạy dữ liệu trên PC của họ chạy ARCGIS 10.1 - nó bị sập sau 267 bản ghi trong hai lần riêng biệt. Mặc dù không có kết luận, luồng chung có vẻ là Arc 9.3 sẽ xử lý dữ liệu nhưng Arc 10.x thì không.


1
ArcGIS 10.0 hiện sử dụng mô-đun arcpy (ArcGIS 9.x sử dụng mô-đun arcgisscripting). Bạn sẽ phải cấu hình lại mã của mình để gọi arcpy cũng như điều chỉnh tên của bất kỳ công cụ xử lý địa lý nào, nếu bạn muốn nó hoạt động trong môi trường AGS 10.
dchaboya

5
Không, điều đó không đúng - các tập lệnh cũ hoạt động trong 9.3 sẽ tiếp tục hoạt động trong 10 và 10.1. Bạn không cần phải sửa đổi gp thành arcpy. Bạn thậm chí có thể xen kẽ gp và arcpy trong suốt một tập lệnh nếu bạn muốn thêm chức năng mới, nhưng không chuyển đổi hoàn toàn. ..... tại sao trường hợp cụ thể này bị rơi ở trên, tôi không biết. Đề nghị của tôi là chia nó thành các phần và xem chính xác công cụ / chức năng cuối cùng sẽ xảy ra trước khi bảo vệ trăn
KHibma

KHibma, vâng tôi có ý nghĩa vì nó hoạt động một phần khi chạy từ AGS 10.
dchaboya

Các điểm dữ liệu đã thay đổi? Tôi giả sử bạn đang sử dụng các cơ sở trong khoảng cách với mạng lưới đường bộ (thời gian di chuyển). Không có gì đảm bảo rằng các thuật toán xử lý các điểm dữ liệu quản lý các điểm giống hệt nhau mỗi khi quá trình được chạy. 300 hoặc 306 hoặc bất cứ điều gì có thể là sự trùng hợp. Tôi đã sử dụng NA để phân tích chi phí của một mạng dựa trên các đường và vị trí trong tập lệnh python và tôi tự hỏi liệu bạn đã thử một tập hợp con nhỏ hơn chưa. Tôi sẽ chạy các nhóm điểm nhỏ hơn trên máy trạm của mình trong 60 phút di chuyển trên máy trạm. Phân tích thời gian du lịch sẽ phá hủy sức mạnh xử lý.
JLP Wisc.

1
Thật không may, chúng tôi cũng đang phải đối mặt với các vấn đề về tính ổn định của Arcpy GP (trên thực tế chỉ là một trình bao bọc COM, và vì nó trông giống như một lỗi). arcpy là gói trang web duy nhất mà tôi biết, thực sự có thể đánh sập trình thông dịch python. CLJ đã đề xuất một số cách giải quyết ở đây trong các câu trả lời (sử dụng 64 Bit GP, con trỏ GA, v.v ...), nhưng chúng tôi đã nhận được phản hồi từ ESRI rằng các vấn đề này là lỗi. Hy vọng gói dịch vụ tiếp theo mang lại sự cải thiện về điều này
Jürgen Zornig

Câu trả lời:


1

Nếu bạn chạy trình quản lý tác vụ và theo dõi mức tăng bộ nhớ thực thi của python và vượt quá 1 gb trước khi nó chết, thì bạn có thể được lợi từ việc nâng cấp lên 10,1 64 bit địa lý.

Đối với hiệu suất, nếu bạn đang sử dụng các con trỏ, bạn có thể được hưởng lợi từ các con trỏ arcpy.da mới. http://resource.arcgis.com/en/help/main/10.1/index.html#//018w00000008000000

Tôi đã nâng cấp một dự án để sử dụng arcpy.da và đó là một cải tiến 2 độ.


1

Đây chỉ là một lỗi Arcpy. Bạn có thể cố gắng tránh sử dụng các bước gây ra sự cố, nhưng nó thường xảy ra dưới các công cụ khác nhau khi được sử dụng để xử lý thông qua một danh sách dài dữ liệu. Cách giải quyết duy nhất tôi đã tìm thấy là làm cho tập lệnh của tôi lưu tiến trình của nó trên đường đi vào đĩa để nếu bạn khởi động lại quá trình, nó sẽ biết lấy từ đâu. Nếu sau đó bạn vô hiệu hóa thông báo trình gỡ lỗi windows bằng cách thay đổi sổ đăng ký (xem bên dưới), thì bạn có thể liên tục thực thi tập lệnh trong cmd.exe cho đến khi hoàn thành toàn bộ lô mà không phải đóng quy trình thủ công mỗi lần ở giữa.

Tôi biết đây là một cách giải quyết khủng khiếp, nhưng nó khá hiếm khi có một thư viện python giết chết trình thông dịch python.

DWORD HKLM or HKCU\Software\Microsoft\Windows\Windows Error Reporting\DontShowUI = "1"
DWORD HKLM or HKCU\Software\Microsoft\Windows\Windows Error Reporting\Disabled = "1"

0

Bạn đã kiểm tra kịch bản xử lý con trỏ như thế nào chưa? Các ứng dụng của tôi thường bị treo khi tôi quên đóng chúng bằng cách sử dụng rõ ràng del row, cursor, đôi khi chỉ sau một thời gian.

Nếu điều đó không có ích, tôi khuyên bạn nên sử dụng một phần nhỏ hơn của mã và / hoặc dữ liệu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.