需求
- 使用多进程的方式,批量生成模拟手机号
import os
import time
from multiprocessing import Process
class MyProcess(Process):
def __init__(self, name, start_phone, num):
super().__init__()
self.name=name
self.start_phone=start_phone
self.num=num
self.calc_result=[]
def company_create(self, phone):
pass
def loops_calc(self):
comp_id_list=[]
user_id_list=[]
for phone in range(self.start_phone, self.start_phone + self.num):
company_detail = self.company_create(phone)
comp_id_list.insert(self.num-1, company_detail['comp_id'])
user_id_list.insert(self.num-1, company_detail['user_id'])
creat_list = {
'company_id': comp_id_list,
'user_id': user_id_list
}
print(creat_list)
def run(self):
print(self.name, "is run, start time is ---", time.time())
self.loops_calc()
print(self.name, "is end, completion time is ---", time.time())
if __name__=='__main__':
print(f"你的电脑CPU线程数是:{os.cpu_count()}")
main_start_time=time.time()
process_list=[]
"""演示4000个号码,分成4个进程工作,实际分成几个取决于你的电脑CPU线程数"""
p1=MyProcess("第一进程", 13000000000, 1000)
p2=MyProcess("第二进程", 13000001000, 1000)
p3=MyProcess("第三进程", 13000002000, 1000)
p4=MyProcess("第四进程", 13000003000, 1000)
process_list.append(p1)
process_list.append(p2)
process_list.append(p3)
process_list.append(p4)
for prs in process_list:
prs.start()
"""主进程循环检查子进程活动状态,全部为False后程序退出"""
while process_list:
for prs in process_list:
if not prs.is_alive():
process_list.remove(prs)
print(f"所有进程已结束,程序总耗时>>>>>{time.time()-main_start_time}")