如何在Python中一次运行2个不同的进程

时间:2013-10-13 18:46:26

标签: windows-7 python-3.x

我正在尝试在运行Windows 7的Python 3中编写程序。我希望程序能够在窗口中显示文本并同时播放音频文件。我可以在不同的时间成功完成这两个过程。如何同时完成这些流程?这是一个取自该程序的代码块:

     import lipgui, winsound, threading
     menu = lipgui.enterbox("Enter a string:") 
     if menu == "what's up, lip?":
        t1 = threading.Thread(target=winsound.PlaySound("C:/Interactive Program/LIP Source Files/skyisup.wav", 2), args=(None))
        t2 = threading.Thread(target=lipgui.msgbox("The sky is up"), args = (None))

1 个答案:

答案 0 :(得分:2)

target的{​​{1}}参数必须指向要执行的函数。您的代码在将函数传递给Thread之前对其进行评估。

target

在功能上与:

相同
t1 = threading.Thread(target=winsound.PlaySound("C:/Interactive Program/LIP Source Files/skyisup.wav", 2), args=(None))
t2 = threading.Thread(target=lipgui.msgbox("The sky is up."), args = (None))

您实际想要做的是在评估 之前仅将函数传递给val1 = winsound.PlaySound("C:/Interactive Program/LIP Source Files/skyisup.wav", 2) t1 = threading.Thread(target=val1, args=(None)) val2 = lipgui.msgbox("The sky is up.") t2 = threading.Thread(target=val2, args=(None)) ,并将要传递的参数传递给所需的函数实例化target时的args参数。

Thread

现在t1和t2包含Thread实例,其中引用了要与参数并行运行的函数。他们仍然没有运行代码。要做到这一点,你需要运行:

t1 = threading.Thread(target=winsound.PlaySound, args=("C:/Interactive Program/LIP Source Files/skyisup.wav", 2))
t2 = threading.Thread(target=lipgui.msgbox, args=("The sky is up.",))

请务必不要致电t1.start() t2.start() t1.run()t2.run()是一种run()通常在新线程中运行的线程方法。

最终代码应为:

start()