Pygtk线程化长命令行进程

时间:2011-03-31 17:16:18

标签: python command-line pygtk graphicsmagick

我在Windows上的PyGtk。我的程序使用GraphicsMagick将PDF转换为图像,然后显示图像。多页PDF的转换时间可能很长,所以程序必须等待命令行返回,我需要解决这个问题并允许用户在创建映像时使用GUI。我尝试使用gtk的线程和python的线程到目前为止还没有工作,有没有办法轻松调用GraphicsMagick转换作为后台进程并且returnot等待它返回?

我正在使用subprocess(command)从命令行执行转换。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

如果仍有待处理的页面,您可以使用调用subprocess.Popen()的空闲函数并返回True。这意味着它将在下一个可用的机会再次被召唤。完成页面后,可以从空闲函数返回False,它将不再被调用。