[英]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 不是線程安全的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.