我在Windows上的PyGtk。我的程序使用GraphicsMagick將PDF轉換爲圖像,然後顯示圖像。在多頁PDF中,轉換可能會非常長,所以程序必須等待命令行返回,我需要繞過此操作並允許用戶在創建映像時使用GUI。我嘗試使用gtk的線程和python的線程目前還沒有工作,有沒有一種方法可以輕鬆地將GraphicsMagick轉換作爲後臺進程調用,並且returnot等待它返回?Pygtk線程長命令行進程
我正在使用子流程(命令)從命令行執行轉換。
我在Windows上的PyGtk。我的程序使用GraphicsMagick將PDF轉換爲圖像,然後顯示圖像。在多頁PDF中,轉換可能會非常長,所以程序必須等待命令行返回,我需要繞過此操作並允許用戶在創建映像時使用GUI。我嘗試使用gtk的線程和python的線程目前還沒有工作,有沒有一種方法可以輕鬆地將GraphicsMagick轉換作爲後臺進程調用,並且returnot等待它返回?Pygtk線程長命令行進程
我正在使用子流程(命令)從命令行執行轉換。
只需使用subprocess.Popen:
import subprocess
subprocess.Popen(["command", "arg1", "arg2"])
欲瞭解更多信息,請參閱: http://docs.python.org/library/subprocess.html#using-the-subprocess-module
如果你真的需要使用線程使用gtk.gdk.threads_init()
前gtk.main()
http://library.gnome.org/devel/pygtk/stable/gdk-functions.html#function-gdk--threads-init
你可以使用一個空閒函數,調用如果還有剩餘頁面需要處理,則返回True
。這意味着它會在下一個可用的機會時再次被調用。當你完成這些頁面時,你可以從空閒函數返回False
,它不會再被調用。
謝謝你回答我的問題。不幸的是,我沒有提出正確的問題,因爲我意識到我需要在後臺運行的過程不僅僅是一個命令行調用,它是一個爲PDF中的多個頁面調用命令行n次的循環。也許是subprocess.Popen和其他線程的組合? – jefferson411 2011-03-31 19:36:54
確定編輯我的答案。 – crash 2011-04-01 07:17:46