ไลบรารีสำหรับเขียนโปรแกรมแบบอะซิงโครนัสและตามเหตุการณ์โดยใช้คอลเลกชันที่สังเกตได้และฟังก์ชันตัวดำเนินการสืบค้นใน Python
สำหรับ v3.X โปรดไปที่สาขา v3
ReactiveX สำหรับ Python v4.x ทำงานบน Python 3.7 หรือสูงกว่า ในการติดตั้ง:
pip3 install reactivex
ReactiveX สำหรับ Python (RxPY) เป็นไลบรารีสำหรับเขียนโปรแกรมแบบอะซิงโครนัสและตามเหตุการณ์โดยใช้ลำดับที่สังเกตได้และตัวดำเนินการสืบค้นแบบ pipable ใน Python เมื่อใช้ Rx นักพัฒนาจะแสดงสตรีมข้อมูลแบบอะซิงโครนัสด้วย Observables ค้นหาสตรีมข้อมูลแบบอะซิงโครนัสโดยใช้ตัวดำเนินการ และกำหนดพารามิเตอร์การทำงานพร้อมกันในสตรีมข้อมูล/เหตุการณ์โดยใช้ Schedulers
import reactivex as rx
from reactivex import operators as ops
source = rx . of ( "Alpha" , "Beta" , "Gamma" , "Delta" , "Epsilon" )
composed = source . pipe (
ops . map ( lambda s : len ( s )),
ops . filter ( lambda i : i >= 5 )
)
composed . subscribe ( lambda value : print ( "Received {0}" . format ( value )))
อ่านเอกสารเพื่อเรียนรู้หลักการของ ReactiveX และรับข้อมูลอ้างอิงที่สมบูรณ์ของตัวดำเนินการที่มีอยู่
หากคุณต้องการย้ายโค้ดจาก RxPY v1.x หรือ v3.x โปรดอ่านส่วนการย้าย
นอกจากนี้ยังมีรายการเอกสารของบุคคลที่สามที่นี่
เข้าร่วมการสนทนาในการสนทนา GitHub! หากคุณมีคำถามหรือข้อเสนอแนะ
ReactiveX สำหรับ Python เป็นการใช้งาน Rx ที่ค่อนข้างสมบูรณ์โดยมีโอเปอเรเตอร์มากกว่า 120 ราย และผ่านการทดสอบหน่วยมากกว่า 1,300 รายการ RxPY ส่วนใหญ่เป็นพอร์ตโดยตรงของ RxJS แต่ยังยืมเล็กน้อยจาก Rx.NET และ RxJava ในแง่ของเธรดและการบล็อกตัวดำเนินการ
ReactiveX สำหรับ Python เป็นไปตาม PEP 8 ดังนั้นชื่อฟังก์ชันและเมธอดทั้งหมดจึงเป็น snake_cased
เช่น ตัวพิมพ์เล็กโดยมีคำคั่นด้วยขีดล่างตามความจำเป็นเพื่อปรับปรุงความสามารถในการอ่าน
ดังนั้นโค้ด .NET เช่น:
var group = source . GroupBy ( i => i % 3 ) ;
จำเป็นต้องเขียนด้วย _
ใน Python:
group = source . pipe ( ops . group_by ( lambda i : i % 3 ))
ด้วย ReactiveX สำหรับ Python คุณควรใช้อาร์กิวเมนต์คำหลักที่มีชื่อแทนอาร์กิวเมนต์ตำแหน่งเมื่อตัวดำเนินการมีอาร์กิวเมนต์ทางเลือกหลายตัว RxPY จะไม่พยายามตรวจจับข้อโต้แย้งที่คุณให้กับผู้ดำเนินการ (หรือไม่)
โครงการนี้ได้รับการจัดการโดยใช้บทกวี โค้ดถูกจัดรูปแบบโดยใช้ Black, isort รหัสถูกตรวจสอบแบบคงที่โดยใช้ pyright และ mypy
หากคุณต้องการใช้ประโยชน์จากการรวม VSCode เริ่มต้น ให้กำหนดค่า Poetry ก่อนเพื่อสร้างสภาพแวดล้อมเสมือนในที่เก็บ:
poetry config virtualenvs.in-project true
หลังจากโคลนพื้นที่เก็บข้อมูลแล้ว ให้เปิดใช้งานเครื่องมือ:
poetry install
poetry run pre-commit install
รันการทดสอบหน่วย:
poetry run pytest
เรียกใช้การตรวจสอบโค้ด (ด้วยตนเอง):
poetry run pre-commit run --all-files