- 题目
- (一)创建项目proj_day18,添加包quest1,添加名为myprocess的源码文件,完成以下任务
1.创建一个子进程,完成如下任务:
(1)添加构造函数,正确实现构造函数功能代码。
①提示,需要有参数。
(2)重写run方法,完成如下任务:
①生成纯数字构成的随机字符串,保存到randNum,长度5个字符。
②生成纯字母构成的随机字符串,保存到randStr,长度5个字符。
③得到当前进程的id,保存到curID。
④将randNum和curID拼接成一个字符串,保存到变量randNumID。
⑤将randStr和CurID拼接成一个字符串,保存到变量randStrID。
⑥分别将上面两个拼接后的字符串写入到文件,文件名为log.txt。
1)提示,内容格式如下:
03835->[1368] EJfpe->[1368]
2)提示,每个进程写入的数据不丢失、不乱序。
2.添加主程序入口,完成如下任务:
(1)创建4个进程,正确传递任务函数和参数。
(2)启动所有进程。
让主进程等待所有子进程结束。
import multiprocessing,random,string
class Mymul(multiprocessing.Process):
def __init__(self,mullock):
super().__init__()
self.mullock=mullock
def run(self):
randNum = ''.join(random.choices(string.digits, k=5))
randStr=''.join(random.choices(string.ascii_letters,k=5))
curID=self.pid
randNumID=randNum + '->' + str([curID])+' '
randStrID=randStr + '->'+ str([curID])
randall=randNumID + randStrID+'\n'
self.mullock.acquire()
with open('log.txt',mode='a+') as po:
po.write(randall)
self.mullock.release()
if __name__ == '__main__':
mullock = multiprocessing.Lock()
mulist=[]
for i in range(4):
mul=Mymul(mullock)
mulist.append(mul)
for i in mulist:
i.start()
for i in mulist:
i.join()