คำถามติดแท็ก pygi

5
วิธีการทำงานแบบอะซิงโครนัสในแอพ Python GObject Introspection
ฉันกำลังเขียนแอพ Python + GObject ที่ต้องอ่านข้อมูลจำนวนเล็กน้อยจากดิสก์เมื่อเริ่มต้น ข้อมูลจะถูกอ่านแบบซิงโครนัสและใช้เวลาประมาณ 10 วินาทีในการดำเนินการอ่านให้เสร็จในช่วงเวลาที่การโหลด UI ล่าช้า ฉันต้องการเรียกใช้งานแบบอะซิงโครนัสและรับการแจ้งเตือนเมื่อพร้อมโดยไม่ปิดกั้น UI มากขึ้นหรือน้อยลงเช่น: def take_ages(): read_a_huge_file_from_disk() def on_finished_long_task(): print "Finished!" run_long_task(task=take_ages, callback=on_finished_long_task) load_the_UI_without_blocking_on_long_task() ฉันเคยใช้GTaskมาก่อนในเรื่องแบบนี้ แต่ฉันกังวลว่ารหัสของมันไม่ได้ถูกแตะต้องใน 3 ปีเลยก็ถูกส่งไปยัง GObject Introspection เพียงลำพัง สิ่งสำคัญที่สุดคือไม่มีใน Ubuntu 12.04 อีกต่อไป ดังนั้นฉันกำลังมองหาวิธีที่ง่ายในการทำงานแบบอะซิงโครนัสไม่ว่าจะเป็นแบบ Python มาตรฐานหรือในแบบมาตรฐาน GObject / GTK + แก้ไข: นี่คือรหัสบางส่วนพร้อมตัวอย่างของสิ่งที่ฉันพยายามทำ ฉันได้ลองpython-deferตามที่แนะนำในความคิดเห็น แต่ฉันไม่สามารถจัดการกับภารกิจที่มีความยาวแบบอะซิงโครนัสและปล่อยให้โหลด UI โดยไม่ต้องรอให้เสร็จ เรียกดูรหัสการทดสอบ มีวิธีที่ง่ายและใช้กันอย่างแพร่หลายในการทำงานแบบอะซิงโครนัสและรับการแจ้งเตือนเมื่องานเสร็จหรือไม่

2
PYGTK ถึง PYGI: gtk.timeout_add เทียบเท่า
ฉันได้แปลงรหัส Python เพื่อใช้ PYGI แต่ฉันไม่สามารถหาวิธีการแปลงบรรทัดนี้: gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork) โดยชัดแจ้งเนื่องจากฉันไม่ทราบความแตกต่างระหว่าง PYGTK และ PYGI จริงๆรหัสใหม่ของฉันจึงใช้ from gi.repository import Gtk from gi.repository import AppIndicator3 as appindicator ตามที่แสดงไว้ที่นี่https://wiki.ubuntu.com/DesktopExperienceTeam/ApplicationIndicators#Python_version รหัสเต็มฉันพยายามแปลงอยู่ที่นี่http://pastebin.com/raw.php?i=aUtASRpy มีอะไรเทียบเท่า gtk.timeout_add(PING_FREQUENCY * 1000, self.doWork) ใน PYGI ฉันยังสมมติว่า PYGI เป็นวิธีที่ทันสมัยที่สุดในการสร้างตัวบ่งชี้ความสามัคคี ฉันยังสมมติว่ามันเป็นการดีที่สุดสำหรับตัวบ่งชี้ที่จะตรวจสอบสถานะของบางสิ่งบางอย่างมากกว่าสำหรับบางสิ่งบางอย่างเพื่อบอกสถานะตัวบ่งชี้ (push vs pull) มันเป็นไรไหมที่จะให้โปรแกรมไพ ธ อนตรวจสอบบางอย่างทุกวินาที? ขอบคุณ!
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.