【问题标题】:Run os.system() multiple times simultaneously in Python?在 Python 中同时运行 os.system() 多次?
【发布时间】:2012-08-20 07:52:28
【问题描述】:

我编写了以下简短的 Python 脚本,用于在 Fedora 17 系统上使用 cclive 下载 flv 视频。

urls = [line.strip() for line in open("urls.txt")]
for url in urlstoget:
    os.system('cclive %s' % url)

它工作正常,但视频限制在 80kbps 左右。我有 39 个要下载,想同时下载 2-4 个。

如何同时多次运行 os.system() 命令?

【问题讨论】:

    标签: python multithreading


    【解决方案1】:

    使用threadingmultiprocessing

    这是一个使用多处理的示例:

    def retrieve_url(url):
        os.system('cclive %s' % url)
    
    pool = multiprocessing.Pool(4)
    pool.map(retrieve_url, list_of_urls)
    

    还有一个指向另一个 SO 问题的链接:Python - parallel commands

    【讨论】:

    • 感谢这完美的作品。好吧,屏幕输出进度条都从cclive的屏幕底部堆叠在一起,但它运行了4次。谢谢。
    【解决方案2】:

    查看子进程模块,特别是 Popen() 方法。你也可以使用 os.fork()

    【讨论】:

    • subprocess 在这里是一个很好的解决方案(在某些方面比我的回答更好)。不知道为什么没想到……
    • 谢谢,我查看了 subprocess,但我只编程了几个月,而且 docs.python 和以往一样神秘。
    • @James -- 如果你坚持下去,你会习惯文档的格式。一旦你掌握了它,它们实际上很容易阅读/使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多