创建进程的2种方式
2019-05-08 07:30:15来源:博客园 阅读 ()
两种方式都是利用multiprocessing模块导入Process类来实现具体方法看代码
第一种:
from multiprocessing import Process import time # 创建的子程序代码 def task(name): print('%s is running' % name) time.sleep(2) print('%s is over' % name) # 注意,在windows系统中,创建进程会将代码以模块的方式从头到尾加载一遍 # 一定要写在if __name__ == '__main__':代码块里面 # 强调:函数名一旦加括号,执行优先级最高,立刻执行 # 主程序 if __name__ == '__main__': p1 = Process(target=task, args=('egon', )) p1.start() # 告诉操作系统创建一个进程 print('主程序打印打印')
第二种:
from multiprocessing import Process import time class MyProcess(Process): def __init__(self, name): super().__init__() self.name = name # 必须写run方法 def run(self): print('%s is running' % self.name) time.sleep(1) print('%s is end' % self.name) if __name__ == '__main__': obj = MyProcess('egon') obj.start() print('主程序')
两种方法其实过程大致相同,实现方式略微有点差别
结果都是:
主进程正在运行
egon is running!
egon is end!
子进程对象.start()方法:向操作系统发出请求:说我要创建个子进程了,快帮我搞一个。
此时start处的代码相当于异步继续向下执行,执行速度肯定会快于操作系统收到请求然后选择性的创建子进程,所以主程序执行完了,子进程的代码才开始执行。
要想让子进程先执行,然后执行下面的主程序的话,可以在子进程下面来个.join(),意思是你子进程先走,我等你搞定了我再进行接下来的主进程代码!
from multiprocessing import Process import time def task(name): print('%s is running!' % name) time.sleep(2) print('%s is end!' %name) if __name__ == '__main__': p = Process(target=task, args=('egon', )) p.start() p.join() print('主进程继续运行') # 结果 egon is running! egon is end! 主进程正在运行
一次性创建多个子程序:
from multiprocessing import Process import time def task(name): print('%s正在运行。。。。。' %name) time.sleep(2) print('%s运行结束。。。。。' %name) if __name__ == '__main__': p_list = [] for i in range(1,4): p = Process(target=task, args=('进程[%s]' % i, )) p.start() p_list.append(p) for n in p_list: n.join() print('主进程继续进行!')
原文链接:https://www.cnblogs.com/suguangti/p/10821697.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python连载30-多线程之进程&线程&线程使用 2019-08-13
- python多线程同步实例分析 2019-08-13
- xpath+多进程爬取八零电子书百合之恋分类下所有小说。 2019-08-13
- xpath+多进程爬取全书网纯爱耽美类别的所有小说。 2019-08-13
- 进程相关 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash