当线程正在等待stdout时继续运行python脚本

时间:2014-03-08 03:02:49

标签: python linux multithreading subprocess multiprocessing

我使用python脚本接收输入并在linux上运行命令。在一个线程中接收一个命令,它会切碎一个逻辑卷。但有时需要很长时间才能完成粉碎磁盘逻辑卷。

subproc.Popen('shred /dev/group/m1')

python中的线程一次运行一个。因此,脚本挂起,而不是在运行子进程时接受其他输入。有没有办法解决这个问题,以便在线程等待来自stdout的数据时可以同时处理其他输入?

2 个答案:

答案 0 :(得分:0)

抱歉,我在Windows上使用它:

os.system("start /min cmd /c C:\Python27\python.exe sino1.py")

请参阅:

Python执行Unix / Linux命令示例 http://www.cyberciti.biz/faq/python-execute-unix-linux-command-examples/

答案 1 :(得分:0)

  • Popen('shred /dev/group/m1') 失败,除非您忘记显示shell=True参数
  • Popen()不阻止,无论子进程可能需要多长时间
  • 您可以等待多个Python线程并行输入。 Python可以在IO上发布GIL。

也就是说,如果您正确使用subprocess模块,那么您的脚本不应该挂起。