2011-03-31 45 views
1

我在Windows上的PyGtk。我的程序使用GraphicsMagick將PDF轉換爲圖像,然後顯示圖像。在多頁PDF中,轉換可能會非常長,所以程序必須等待命令行返回,我需要繞過此操作並允許用戶在創建映像時使用GUI。我嘗試使用gtk的線程和python的線程目前還沒有工作,有沒有一種方法可以輕鬆地將GraphicsMagick轉換作爲後臺進程調用,並且returnot等待它返回?Pygtk線程長命令行進程

我正在使用子流程(命令)從命令行執行轉換。

回答

1

只需使用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

+0

謝謝你回答我的問題。不幸的是,我沒有提出正確的問題,因爲我意識到我需要在後臺運行的過程不僅僅是一個命令行調用,它是一個爲PDF中的多個頁面調用命令行n次的循環。也許是subprocess.Popen和其他線程的組合? – jefferson411 2011-03-31 19:36:54

+0

確定編輯我的答案。 – crash 2011-04-01 07:17:46

0

你可以使用一個空閒函數,調用如果還有剩餘頁面需要處理,則返回True。這意味着它會在下一個可用的機會時再次被調用。當你完成這些頁面時,你可以從空閒函數返回False,它不會再被調用。