Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当线程等待标准输出时,保持运行python脚本_Python_Linux_Multithreading_Subprocess_Multiprocessing - Fatal编程技术网

当线程等待标准输出时,保持运行python脚本

当线程等待标准输出时,保持运行python脚本,python,linux,multithreading,subprocess,multiprocessing,Python,Linux,Multithreading,Subprocess,Multiprocessing,我使用python脚本在linux上接收输入并运行命令。一个线程接收到一个命令,它就会分解一个逻辑卷。但有时需要很长时间才能完成对磁盘逻辑卷的分解 subproc.Popen('shred /dev/group/m1') python中的线程一次运行一个线程。因此,脚本挂起,在运行子流程时不接受其他输入。有没有办法解决这个问题,以便在线程等待来自标准输出的数据时,可以同时处理其他输入 对不起,我在windows上使用此选项: os.system("start /min cmd /c C:\Py

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

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

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

对不起,我在windows上使用此选项:

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

Python执行Unix/Linux命令示例

  • Popen('shred/dev/group/m1')
    将失败,除非您忘记显示
    shell=True
    参数
  • Popen()
    不会阻塞,无论子进程可能需要多长时间
  • 您可以在多个Python线程中并行等待输入。Python可以在IO上释放GIL
也就是说,如果您正确使用
子流程
模块,那么您的脚本就不会挂起。

os.system()
是完全不必要的,它不会回答问题(它不允许在不阻塞的情况下读取子流程的输出)。