การทำงานพร้อมกันและการประมวลผล

การทำงานพร้อมกันและการประมวลผล

การเรียกทั่วไปทำในโฟลว์ปัจจุบัน และอาจรอจับภาพ ประมวลผล ท่าทาง งาน UI หรือผู้ใช้ parallel ของการสัมผัสกับ Flow.start เป็นคนละกลไก Blocking หมายถึงรอในโฟลว์ผู้เรียก ไม่ได้แปลว่า UI Android ค้าง

โฟลว์เบื้องหลัง

Flow.start(name, params=None) เริ่มสาขาที่แยกกันและคืนเลขลำดับ Int แต่ละ Run มีสาขาเบื้องหลังได้สูงสุดสองสาขา ไม่มี Flow.stop(), pause(), resume(), join() หรือ handle โฟลว์หลักรอสาขาเบื้องหลัง ข้อผิดพลาดในสาขาใดหรือ System.stop() หยุดทั้ง Run

# ตั้งค่าโฟลว์มาโครชื่อ watch_enemy ก่อนเรียกใช้
ordinal = Flow.start("watch_enemy", {"task": "status"})
print(ordinal)

สถานะร่วม

ใช้ค่าและบิลเดอร์ที่เปลี่ยนแปลงได้แยกในแต่ละโฟลว์ Storage ใช้ร่วมกันโดยตั้งใจและล็อกแต่ละการทำงาน รวมการแก้ไขซ้อนที่ติดตาม Storage.get() แล้ว Storage.set() ไม่เป็นอะตอมมิก ใช้ผู้เขียนเพียงรายเดียวสำหรับอ่าน-แก้ไข-เขียน การจับภาพและแคชก็ใช้ร่วมกัน การเปลี่ยนมีผลทุกสาขา

การสัมผัสในคิว

parallel=True จัดคิวการสัมผัส แต่นอก collect นั้น delay_before และ delay_after ยังรอในผู้เรียก Touch.collect() รวมการสัมผัสเพื่อ Touch.send(); Touch.wait() รอจนเสร็จ ท่าทางใช้ช่องป้อนข้อมูล Android ร่วมกัน ไม่ใช่อุปกรณ์อิสระ การยกเลิกท่าทางที่กำลังทำต้องใช้ Android 8 ขึ้นไป

# รวบรวมการสัมผัสที่ซ้อนกันแล้วรอจนเสร็จ
Touch.collect()
click((300, 900), hold_ms=1500, parallel=True)
click((780, 900), delay_before=500, parallel=True)
Touch.send()
Touch.wait()

การตรวจจับและการรอ UI

Region.find* ค้นหาการปรากฏ ส่วน Region.wait* รอให้หายไป การตรวจจับครั้งเดียวก็ใช้เวลาประมวลผล อัตราตรวจสอบจำกัดที่ 1–60 Hz prompt MacroPanel แบบโต้ตอบเรียงกันและรอผู้ใช้ OverlayText เป็นของแต่ละโฟลว์ off_all() ปล่อยเฉพาะของโฟลว์นั้น งาน UI ผ่าน Android Main