运行时间和上面博主的有很大不同, 结论也完全不同,可能是硬件的原因。
结论,运行时间:不用进程 > 函数形式进程 > 类形式进程
目录
2.函数形式multiprocessing.Process()
3. 类形式 multiprocessing.Process类
1. 不用进程:
依次写入两个文件,运行时间:1.572s
import time
def write_file(filename,num):
target = open(filename, 'w')
for i in range(1,num+1):
target.write("%d line\n" % i)
if __name__ == '__main__':
start = time.time()
#100W
write_file('1.txt', 1000000)
#200W
write_file('2.txt', 2000000)
end = time.time()
print(str(round(end-start,3))+'s')
2.函数形式multiprocessing.Process()
将函数作为参数,丢入进程。运行时间:1.082s,减少了1/3的时间
import time
import multiprocessing
def write_file(filename, num):
target = open(filename, 'w')
for i in range(1, num + 1):
target.write("%d line\n" % i)
if __name__ == '__main__':
start = time.time()
p1 = multiprocessing.Process(target=write_file, args=('1.txt', 1000000))
p2 = multiprocessing.Process(target=write_file, args=('2.txt', 2000000))
# 启动子进程
p1.start()
p2.start()
# 等待fork的子进程终止再继续往下执行,可选填一个timeout参数
p1.join()
p2.join()
end = time.time()
print(str(round(end - start, 3)) + 's')
3. 类形式 multiprocessing.Process类
继承Process类,运行时间:0.57
import time
import multiprocessing
def write_file(filename, num):
target = open(filename, 'w')
for i in range(1, num + 1):
target.write("%d line\n" % i)
class WriteFile(multiprocessing.Process):
def __init__(self, filename, num):
multiprocessing.Process.__init__(self)
self.filename = filename
self.num = num
def run(self):
write_file(self.filename, self.num)
if __name__ == '__main__':
start = time.time()
p1 = WriteFile('1.txt', 1000000)
p2 = WriteFile('2.txt', 1000000)
p1.start()
p2.start()
p1.join()
p2.join()
end = time.time()
print(str(round(end - start, 3)) + 's')