Runtime v2.81 · Cập nhật 30 thg 9, 2026

Flow

Bộ điều khiển static để khởi chạy song song các luồng chạy có tên của macro.

Cú pháp

Flow

Không thể khởi tạo trực tiếp lớp này.

Tham số

Không có

Giá trị trả về

—

Hành vi / tác động

Bộ điều khiển static để khởi chạy song song các luồng chạy có tên của macro. Tối đa hai luồng chạy nền có thể chạy cùng luồng chạy chính và mỗi tên chỉ được có một lượt gọi còn sống, kể cả khi đang tạm dừng hoặc đang dừng. Flow.start() trả về ngay sau khi bộ điều phối chấp nhận nhánh; luồng chạy nền có thể khởi chạy luồng ngang hàng. Biến được tách riêng theo từng nhánh và không bao giờ hợp nhất về nhánh gọi. Luồng chạy chính chờ mọi luồng chạy nền trước khi lượt Run hoàn tất. Tên không hợp lệ hoặc trùng, hết chỗ chạy nền, lỗi ở bất kỳ nhánh nào, System.stop() hoặc nút Stop của Main đều kết thúc toàn bộ macro. Mỗi điều khiển dock có số của luồng chạy nền chỉ có thể tạm Pause hoặc Resume riêng nhánh đó; không có Stop riêng từng nhánh. Pause hoặc Resume của Main áp dụng cho mọi nhánh, và Resume toàn cục cũng xóa cờ pause cục bộ của nhánh. Cử chỉ chạm từ các nhánh khác nhau có thể hủy lẫn nhau. Chính sách ScreenCapture và audio capture được dùng chung toàn cục. Storage dùng chung các key bền vững giữa các nhánh và không phải kênh nhắn tin liên tiến trình.

Thực thi

  • Chờ hoàn tất: Tùy điều kiện
  • An toàn khi chạy đồng thời: Dùng đối tượng riêng cho mỗi luồng
  • Chạy song song: Có

Flow.start tạo executor nền cô lập và trả số thứ tự Int, không phải handle. Tối đa hai luồng nền chạy cùng luồng chính. Luồng chính chờ nền kết thúc; lỗi ở bất kỳ luồng nào hoặc System.stop() dừng toàn bộ lượt Run.

Ví dụ

# Khởi chạy worker đã cấu hình trong khi main flow vẫn chạy
worker_no = Flow.start("watch_enemy", {"labels": ["boss", "guard"]})
MacroPanel.notify("Background flow #" + str(worker_no) + " started")

Lỗi / giới hạn

Không có giới hạn bổ sung được ghi nhận; tuân thủ hợp đồng tham số và hành vi ở trên.

API liên quan

Thuộc tính

TênMô tả
paramsdict
Input chỉ đọc đã được sao chép cho nhánh hiện tại. Luồng chạy chính nhận dict rỗng. Mỗi lần đọc trả về dữ liệu an toàn đã tách khỏi bộ điều phối và collection của VM cha.

Phương thức

1 phương thức

Flow.start

Khởi chạy một luồng chạy có tên đã cấu hình mà không chặn nhánh gọi.

Cú pháp

Flow.start(name, params=None)

Tham số

TênMô tả
nameString
Tên luồng chạy đã cấu hình chính xác để bộ điều phối macro phân giải.
Bắt buộc · Theo vị trí hoặc tên
Không có giá trị mặc định
paramsdict?
Input tùy chọn được sao chép an toàn và hiển thị qua Flow.params trong nhánh được khởi chạy.
Tùy chọn · Theo vị trí hoặc tên
Mặc định: None

Giá trị trả về

Int — Số thứ tự instance nhánh dương, tăng đơn điệu để hiển thị trạng thái dock và log; đây không phải handle điều khiển.

Hành vi / tác động

Khởi chạy một luồng chạy có tên đã cấu hình mà không chặn nhánh gọi. Tên được bộ điều phối macro đối chiếu. Params được sao chép trước khi gửi và chỉ được chứa None, Boolean, số hữu hạn, String, list, tuple và dict có key String trong giới hạn độ sâu/kích thước của runtime; callable, giá trị domain/tài nguyên và collection có chu kỳ sẽ bị từ chối.

Thực thi

  • Chờ hoàn tất: Không
  • An toàn khi chạy đồng thời: Dùng đối tượng riêng cho mỗi luồng
  • Chạy song song: Có

Trả về sau khi bộ điều phối chấp nhận luồng có tên, không chờ luồng đó kết thúc. Input được sao chép trước khi gửi.

Ví dụ

# Khởi chạy nhận diện và telemetry cùng main flow
recognition_no = Flow.start("recognition", {"region": "arena", "threshold": 0.86})
telemetry_no = Flow.start("telemetry")

# Trong flow nhận diện đã cấu hình, đọc input đã sao chép của nhánh này
region_name = Flow.params.get("region", "full_screen")
threshold = Flow.params.get("threshold", 0.8)

Lỗi / giới hạn

Không có giới hạn bổ sung được ghi nhận; tuân thủ hợp đồng tham số và hành vi ở trên.

API liên quan