【发布时间】:2019-09-07 09:07:48
【问题描述】:
我正在尝试学习多处理库。这样它就可以工作了:
def generate_files(file_number, directory):
var02 = str(int(100*random.random()))
with open(f"{directory}/sample{file_number}.csv", "w") as f:
f.write(var02)
if __name__ == "__main__":
N1 = 100
# create directory for samples
directory = "samples"
if not os.path.exists(directory):
os.makedirs(directory)
cpu_count = int(os.environ["NUMBER_OF_PROCESSORS"]) # doesn't work on mac
# generate using all cores
for i in range(N1):
process = multiprocessing.Process(target=generate_files, args=[i, directory])
process.start()
坏事是程序创建了 100 个进程。我想将它们限制为cpu_count。所以它应该看起来像这样:
for i in range(cpu_count):
process = multiprocessing.Process(target=generate_files, args=[i, directory, cpu_count])
但是这样所有进程都试图写入同一个文件,因为名称是相同的。如果文件数量不是核心的倍数,它也不完美。有什么办法吗?
【问题讨论】:
标签: python python-3.x multiprocessing