【发布时间】:2023-03-28 10:12:01
【问题描述】:
我有 28 个输入文件和 28 个可用 CPU。我编写了一个 python 脚本,它使用 subprocess 来解析带有 QualityAnalysisMain_v2.py 的输入文件。现在它在一个 CPU 上运行良好。我想做的是在一个 CPU 上并行运行每个输入文件 - 28 个同时运行。
我已经尝试过这里的方法:python spreading subprocess.call on multiple CPU cores
尤其是这段代码:
import threading
import subprocess
def worker():
"""thread worker function"""
print 'Worker'
subprocess.call(mycode.py, shell=inshell)
return
threads = []
for i in range(5):
t = threading.Thread(target=worker)
threads.append(t)
t.start()
这里:
for pliki in os.listdir(input_data):
nazwa = pliki.split(".")[0]
subprocess.call("mkdir " + output_data + nazwa, shell=True)
def SubprocessFiles():
for pliki in os.listdir(input_data):
print("python QualityAnalysisMain_v2.py " + input_data + pliki)
subprocess.call("python QualityAnalysisMain_v2.py " + input_data + pliki, shell = True)
return
threads = []
for i in range(28):
t = threading.Thread(target=SubprocessFiles)
threads.append(t)
t.start()
但它最终解析了第一个输入 28 次...
这是我的代码 - 脚本正在为输入目录中的每个文件运行,但在一个 CPU 上:
for pliki in os.listdir(input_data):
nazwa = pliki.split(".")[0]
print("python QualityAnalysisMain_v2.py " + input_data + pliki)
subprocess.call("mkdir " + output_data + nazwa, shell = True)
subprocess.call("python QualityAnalysisMain_v2.py " + input_data + pliki, shell = True)
非常感谢您的任何建议。
最好, 阿加塔
【问题讨论】:
-
如果您不显示如何将文件传递给工作人员进行处理,我们无法猜测出什么问题......
-
请参阅更新后的帖子。最好的!
标签: python multithreading multiprocessing