6.5Python总结:进程,正确传递任务函数和参数。

  • 题目
  • (一)创建项目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

#1.创建一个子进程,完成如下任务:
class Mymul(multiprocessing.Process):
	#1添加构造函数,正确实现构造函数功能代码。
	#①提示,需要有参数。
    def __init__(self,mullock):
        super().__init__()
        self.mullock=mullock
        
    #(2)重写run方法,完成如下任务:   
    def run(self):
    	#①生成纯数字构成的随机字符串,保存到randNum,长度5个字符。
        randNum = ''.join(random.choices(string.digits, k=5))

		#②生成纯字母构成的随机字符串,保存到randStr,长度5个字符。
        randStr=''.join(random.choices(string.ascii_letters,k=5))

		#③得到当前进程的id,保存到curID。
        curID=self.pid


        #⑥分别将上面两个拼接后的字符串写入到文件,文件名为log.txt。
		#1)提示,内容格式如下:
		#03835->[1368] EJfpe->[1368]
		#2)提示,每个进程写入的数据不丢失、不乱序。
        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=[]
    #(1)创建4个进程,正确传递任务函数和参数。
    for i in range(4):
        mul=Mymul(mullock)
        mulist.append(mul)
     #(2)启动所有进程。
    for i in mulist:
        i.start()
    #(3)让主进程等待所有子进程结束。 
    for i in mulist:
        i.join()

你可能感兴趣的:(Python每日练习题,python)