微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用bash 并行运行200,000次python脚本

参见英文答案 > Parallel execution of bash script                                    1个
我需要运行我的Python脚本200,000次.是否可以使用bash执行并行执行?由于它是200,000次,我想同时使用至少10个线程

解决方法:

假设this.py包含以下内容

#!/usr/bin/python
from datetime import datetime
Now = datetime.Now()
print Now

Bash中的以下内容将在20,000轮中同时执行10个this.py进程.在10个流程完成后,下一轮开始.这将允许您执行this.py 200,000次,同时一次只使用10个线程.

#!/bin/bash
for i in {1..20000}; do
  echo -e "\nROUND $i\n"
  for j in {1..10}; do
    /path/to/this.py &
  done
  wait
done 2>/dev/null

…或使用单线:

for i in {1..20000}; do echo -e "\nROUND $i\n"; for j in {1..10}; do /path/to/this.py & done; wait; done 2>/dev/null

你可以明显地排除回声线.我只是为测试目的做了这个,并在STDERR重定向到/ dev / null时显示漂亮的输出.我的输出看起来像这样:

ROUND 1

2015-10-09 23:20:12.432295
2015-10-09 23:20:12.444988`
2015-10-09 23:20:12.471788
2015-10-09 23:20:12.482884
2015-10-09 23:20:12.519446
2015-10-09 23:20:12.558949
2015-10-09 23:20:12.560826
2015-10-09 23:20:12.582571
2015-10-09 23:20:12.600680
2015-10-09 23:20:12.625727

ROUND 2

2015-10-09 23:20:12.761279
2015-10-09 23:20:12.764459
2015-10-09 23:20:12.801361
2015-10-09 23:20:12.831900
2015-10-09 23:20:12.853339
2015-10-09 23:20:12.877965
2015-10-09 23:20:12.921946
2015-10-09 23:20:12.950549
2015-10-09 23:20:12.973625
2015-10-09 23:20:12.986714

ROUND 3

2015-10-09 23:20:13.128276
2015-10-09 23:20:13.169144
2015-10-09 23:20:13.222183
2015-10-09 23:20:13.234889
2015-10-09 23:20:13.242653
2015-10-09 23:20:13.246504
2015-10-09 23:20:13.305419
2015-10-09 23:20:13.306198
2015-10-09 23:20:13.317769
2015-10-09 23:20:13.328895

…等等.

另请参阅GNU Parallel,尽管我认为它可能仅限于运行与您拥有的核心数一样多的同时工作.您可以通过运行多个并行进程来避免这种警告.这是循环等的一个很棒的替代品.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐