簡體   English   中英

Python + webkit + os.fork()

[英]Python + webkit + os.fork()

我在嘗試從子進程回調 webkit 函數時遇到了一些麻煩。 此代碼用於加載后台資源並由 javascript 異步插入。 加載資源后,我需要回調 javascript 函數,同時保持接口正常工作。 我試圖通過管道同步線程,但是主線程中的 while(1) 輪詢(以讀取管道)阻塞接口的方式與將資源加載到主線程中的方式相同。 如果我從子進程中用 javascript 回調 webview.execute_script 它什么都不做,除非我用類似函數的警報提供它,然后中斷:S

給出的例子:

    import pygtk
    pygtk.require("2.0")

    import gtk,webkit,os

    class Browser:
        def __init__(self):
            self.window = gtk.Window()
            #self.window.set_decorated(False)
            self.window.set_default_size(800, 600)
            vbox = gtk.VBox()
            self.scroll_window = gtk.ScrolledWindow()
            self.webview = webkit.WebView()
            self.webview.set_transparent(True)
            self.window.add(self.webview)
            self.window.show_all()
            self.webview.load_uri("http://google.es");
            self.error();

        def error(self):
            child_pid = os.fork()
            if child_pid == 0:
                self.webview.execute_script("""
                    alert(1);
                """)
                os._exit(0)

        def noerror(self):
            self.webview.execute_script("""
                alert(1);
            """)

    if __name__ == "__main__":
        browser = Browser()
        try:
          while True:
              gtk.main_iteration()
        except:
          gtk.main_quit()
          print "BAILING OUT!"

提前致謝!

webkit 不是線程安全的。

參見: http://markmail.org/message/4dwft6s6g6ptavj6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM