摘要:查看有多少个子进程,可以使用命令来查看。很少的资源即可实现多任务。可以说线程时进程进程的一部分。当任务数固定,比较少,使用创建多进程当任务数不固定,数量较多时,使用进程池来解决。向进程池里面添加任务关闭进程池等待所有子进程执行完毕。
进程
进程是启动中的程序,拥有资源,比如摄像头,鼠标,显卡,网卡,键盘。让操作系统调度。是资源分配的单位,进程切换时占用的资源比较大。
创建进程方式:
p1 = multiprocessing.Process(target=test1) p1.start()
使用multiprocessing.Process可以创建多进程,但是创建每份子进程时都会复制一份代码+资源,所以创建多进程会耗费更多的资源。
查看有多少个子进程,可以使用linux命令ps -aux来查看。
一. 进程和线程的区别:
进程:能够实现多任务,一个电脑上开多个qq, 需要很大的资源才能实现多任务
线程:能够实现多任务,一个qq上开了多个聊天窗口。很少的资源即可实现多任务。先有进程,才有线程。可以说线程时进程进程的一部分。
二. 消息队列queue是进程间通信的一种方式,socket也是。
queue队列:先进先出,
栈:先进后出
queue的使用:
q = Queue(3) q.put("adsb") print(q.full()) try: q.put_nowait("aaa") except: print("队列已满") print(q.get()) print(q.empty()) try: q.get_nowait() except: print("队列已空")
三. 进程池pool
pool是用来解决数量比较大的任务执行时,所用到一种最大化资源利用的方式。
当任务数固定,比较少,使用multiprocessing.Process创建多进程;
当任务数不固定,数量较多时,使用进程池pool来解决。
po = Pool(3) for i in range(10): po.apply_async(work, (i, )) #向进程池里面添加任务 po.close() #关闭进程池 po.join() #等待所有子进程执行完毕。意思是子进程都结束后,再操作子进程,必须再close的后面。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/43628.html
摘要:每个在同一时间只能执行一个线程在单核下的多线程其实都只是并发,不是并行,并发和并行从宏观上来讲都是同时处理多路请求的概念。在多线程下,每个线程的执行方式获取执行代码直到或者是虚拟机将其挂起。拿不到通行证的线程,就不允许进入执行。 进程与线程 并发与并行 进程与线程 首先要理解的是,我们的软件都是运行在操作系统之上,操作系统再控制硬件,比如 处理器、内存、IO设备等。操作系统为了向上...
摘要:在中由于历史原因使得中多线程的效果非常不理想使得任何时刻只能利用一个核并且它的调度算法简单粗暴多线程中让每个线程运行一段时间然后强行挂起该线程继而去运行其他线程如此周而复始直到所有线程结束这使得无法有效利用计算机系统中的局部性频繁的线程切换 GIL 在Python中,由于历史原因(GIL),使得Python中多线程的效果非常不理想.GIL使得任何时刻Python只能利用一个CPU核,...
阅读 3994·2021-11-22 13:53
阅读 3593·2021-11-19 11:29
阅读 1183·2021-09-08 09:35
阅读 3137·2020-12-03 17:26
阅读 491·2019-08-29 16:06
阅读 2090·2019-08-26 13:50
阅读 1157·2019-08-23 18:32
阅读 2127·2019-08-23 18:12