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

由subprocess.run产生的进程仅运行单线程

如何解决由subprocess.run产生的进程仅运行单线程

我正在做一项作业,需要我调查使用线程如何加快不同的任务。

我有一个使用3个命令行参数的C程序:问题大小,要使用的线程数量以及要处理的数据的路径。我正在使用subprocess.run(在生成测试数据之后)启动该程序。但是,该程序似乎按顺序运行(当我运行htop时,我只看到一个处理器在工作)。从命令行运行此代码将导致预期数量的处理器以最大容量运行。我在做什么错了?

下面的Python脚本:

from subprocess import run
import os
from random import random

program_name = os.path.join(os.getcwd(),"out")

for problem_size in [3,10,100,1000,5000]:
    file_name = os.path.join(os.getcwd(),"problem_s_{}".format(problem_size))
    arr = [str(random() * 10) for _ in range(problem_size * problem_size)]
    with open("{}.txt".format(file_name),'w') as f:
        f.write(' '.join(arr))

    print("finished writing data")
    for threads_to_use in range(1,10):
        c_program = run(map(str,[program_name,threads_to_use,problem_size,file_name]),capture_output=True)
        print("DONE problem size: {},threads: {}".format(problem_size,threads_to_use))

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