首先,当您在Windows下运行时,请注意,您必须通过确保创建子进程的代码在由
if __name__ == '__main__':
,正如你所做的那样。原因是,当子进程被执行时,整个文件将被重新执行,您将进入一个创建新子进程的无限递归循环。但关键是你有代码
由
阻止你真的这么做
不
不需要也不想由每个子进程执行,即文件的打开和读取。应该移动此代码。
现在来看看你的神秘。根据手册
time.perf_counter()
:
注意上面最后一句话。有人打电话给这个
并行
来自多个进程。您认为对这个函数的调用在计算运行时间时为开始时间和结束时间赋值是连续的调用,但不能保证它们是连续调用。你真的需要用
time.time()
import multiprocessing as mp
import time
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.time() - start_time, 4)) + ' second(s)...\n