【问题标题】:programe run certain period of time using thread () and subprocess()程序使用线程()和子进程()运行一段时间
【发布时间】:2021-03-16 00:05:37
【问题描述】:

我想在我的 liunx 操作系统上运行多个命令,所以我创建了一个脚本来运行多个命令,但有些命令执行时间过长,但我想终止执行时间超过 1 分钟的命令。 我该怎么做?

import subprocess
import threading
import time
from time import sleep

def prog(line):
    def worker(line):
        print(line)
        subprocess.call(line, shell=True )

    t = threading.Thread(target=worker, args=(line,))
    t.start()
    
f=open("a",'r')
for line in f:
    prog(line)

【问题讨论】:

    标签: python python-3.x multithreading subprocess python-multithreading


    【解决方案1】:

    subprocess.call 有一个timeout 参数。
    它会在给定的超时(以秒为单位)后终止命令并引发TimeoutExpired

    import subprocess
    import threading
    
    def prog(line):
        def worker(line):
            print(line)
            try:
                subprocess.call(line, shell=True, timeout=60)
            except subprocess.TimeoutExpired as e:
                print(e)
    
        t = threading.Thread(target=worker, args=(line,))
        t.start()
        
    f=open("a",'r')
    for line in f:
        prog(line)
    

    这是一个可运行的最小示例:https://ideone.com/ZToaJU


    另一个提示,虽然没有被要求:您不需要将args=(line,) 传递给工作函数。由于它被声明为嵌套函数,它已经可以访问progline 变量:

    import subprocess
    import threading
    
    def prog(line):
        def worker():
            print(line)
            try:
                subprocess.call(line, shell=True, timeout=60)
            except subprocess.TimeoutExpired as e:
                print(e)
    
        t = threading.Thread(target=worker)
        t.start()
        
    f=open("a",'r')
    for line in f:
        prog(line)
    

    【讨论】:

    • 这不是一个非常详细的错误描述。
    • 我想运行这种命令但是显示错误
    • 你还是没有说错误是什么。很抱歉,如果您提供一些信息会非常有帮助。
    • 看你自己的评论:“python ss.py -u url.target”。我不知道'ss.py'是什么,我不知道你为什么要添加“-u”,“url.target”应该是什么,也不知道错误消息是什么。我该怎么帮你?
    • 某些脚本已经由某人编写,但我不想更改脚本中的任何内容,但我想通过另一个 python 文件自动运行该脚本。
    猜你喜欢
    • 2013-03-30
    • 2017-05-31
    • 2015-01-04
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 2011-08-17
    • 1970-01-01
    • 2017-04-21
    相关资源
    最近更新 更多