Tôi đang viết một chương trình bằng một khung công tác bằng pygtk. Các chương trình chính thực hiện những điều sau đây:Python, thread và gobject
- Tạo một sợi cơ quan giám sát để theo dõi một số tài nguyên
- Tạo một khách hàng để nhận dữ liệu từ ổ cắm
- gọi
gobject.Mainloop()
nhưng có vẻ như sau khi chương trình của tôi nhập Mainloop, thread watchdog cũng sẽ không chạy.
Cách giải quyết của tôi là sử dụng gobject.timeout_add
để chạy điều khiển màn hình.
Nhưng tại sao tạo một chuỗi khác không hoạt động?
Đây là mã của tôi:
import gobject
import time
from threading import Thread
class MonitorThread(Thread):
def __init__(self):
Thread.__init__(self)
def run(self):
print "Watchdog running..."
time.sleep(10)
def main():
mainloop = gobject.MainLoop(is_running=True)
def quit():
mainloop.quit()
def sigterm_cb():
gobject.idle_add(quit)
t = MonitorThread()
t.start()
print "Enter mainloop..."
while mainloop.is_running():
try:
mainloop.run()
except KeyboardInterrupt:
quit()
if __name__ == '__main__':
main()
Chương trình đầu ra chỉ "Watchdog chạy ... Nhập mainloop ..", sau đó không có gì. Dường như chuỗi không bao giờ chạy sau khi nhập mainloop.
Bạn còn mong đợi điều gì nữa? Với đoạn mã trên, tôi mong đợi hai thứ đó sẽ được in một lần. – u0b34a0f6ae