【发布时间】:2021-02-07 07:02:51
【问题描述】:
所以我正在做一个任务,我需要编写两个使用线程\多处理的程序。虽然它的线程部分很顺利,但我在测量进程的执行时间时遇到了一些麻烦。代码如下:
import multiprocessing as mp
import time
start = time.perf_counter()
txtsmpl = open('C:\\dev\\OS\\dummy.txt', 'r').read()
processes_num = 5
to_replace = 'az'
replace_with = '{[]}'
def process_txt(start_time, inp_text):
txt = list(inp_text)
for i, letter in enumerate(txt):
if letter in to_replace:
txt[i] = replace_with
txt = ''.join(txt)
print(txt + '\n')
print('Ran for ' + str(round(time.perf_counter() - start_time, 4)) + ' second(s)...\n')
def main():
processes = []
for _ in range(processes_num):
p = mp.Process(target=process_txt, args = [time.perf_counter(), txtsmpl])
p.start()
processes.append(p)
for process in processes:
process.join()
finish = time.perf_counter()
print(f'Finished in {round(finish-start, 4)} second(s)')
if __name__ == "__main__":
main()
这是测量它的推荐方法(将开始时间作为参数传递给线程\进程)。但是对于流程,我会得到负的执行时间。当然,我理解当它们都并行运行时会发生这种情况,但我不知道如何防止它。感谢您的帮助!
【问题讨论】:
标签: python python-3.x time multiprocessing python-multiprocessing