Python Pygtk线程长命令行进程

Python Pygtk线程长命令行进程,python,command-line,pygtk,graphicsmagick,Python,Command Line,Pygtk,Graphicsmagick,我在Windows上的PyGtk中。我的程序使用GraphicsMagick将PDF转换为图像,然后显示图像。转换在多页PDF上可能非常长,因此程序必须等待命令行返回,我需要绕过这一点,允许用户在创建图像时使用GUI。到目前为止,我尝试使用gtk的线程和python的线程还没有成功,有没有一种方法可以轻松地将GraphicsMagick转换调用为后台进程,并等待它返回 我正在使用subprocess(command)从命令行执行转换。只需使用subprocess即可。Popen: import

我在Windows上的PyGtk中。我的程序使用GraphicsMagick将PDF转换为图像,然后显示图像。转换在多页PDF上可能非常长,因此程序必须等待命令行返回,我需要绕过这一点,允许用户在创建图像时使用GUI。到目前为止,我尝试使用gtk的线程和python的线程还没有成功,有没有一种方法可以轻松地将GraphicsMagick转换调用为后台进程,并等待它返回


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

只需使用subprocess即可。Popen:

import subprocess
subprocess.Popen(["command", "arg1", "arg2"])
有关更多信息,请参阅:

如果确实需要使用线程,请在
gtk.main()之前使用
gtk.gdk.threads\u init()


只需使用subprocess.Popen:

import subprocess
subprocess.Popen(["command", "arg1", "arg2"])
有关更多信息,请参阅:

如果确实需要使用线程,请在
gtk.main()之前使用
gtk.gdk.threads\u init()


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

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

谢谢您回答了我的问题。不幸的是,我没有问正确的问题,因为我意识到我需要在后台运行的过程不仅仅是一个命令行调用,它是一个循环,无论PDF中有多少页面,它都会调用命令行n次。也许是subprocess.Popen和其他线程的组合?谢谢你回答了我的问题。不幸的是,我没有问正确的问题,因为我意识到我需要在后台运行的过程不仅仅是一个命令行调用,它是一个循环,无论PDF中有多少页面,它都会调用命令行n次。可能是subprocess.Popen和其他线程的组合?