什么场景下你们会用多进程

2015-11-06 13:57:08 +08:00
 Registering
昨天面试基础的问题,算法等都回答得 OK ,多进程知识点用的比较少,回来准备恶补恶补。

大家平时使用多进程一般都在哪些场景下使用,,

昨天面试官说如果打开一张大图,可以考虑在一个单独的进程中打开
13629 次点击
所在节点    Android
32 条回复
domty
2015-11-06 19:06:16 +08:00
某部分操作相对比较耗时又可以从主流程分离的时候
比如用爬虫爬数据的时候我都习惯让爬虫把数据扔个缓存队列里
然后让一个单独线程持有数据库连接并且把数据入库
allan1st
2015-11-06 19:17:00 +08:00
@em70 说的是进程( process )
hqs123
2015-11-06 23:33:57 +08:00
开发中想用就用把...
CodeCaker
2015-11-06 23:38:38 +08:00
我怎么第一个想到的是 chrome 呢?一个标签页挂掉还能继续活着。
yrom
2015-11-06 23:56:28 +08:00
比如音乐播放、大文件下载。。。都可以多进程
Victor215
2015-11-06 23:59:52 +08:00
比如说存在 GIL 的时候……
harry890829
2015-11-07 10:24:04 +08:00
@rebbie 但是如果不用共享内存的话,在数据共享的时候还是会有点问题啊……
glogo
2015-11-07 19:52:17 +08:00
用 python 的时候就想用多进程...
yuriko
2015-11-09 15:33:42 +08:00
Android 的话因为大量行为的发起方都在主线程,所以一旦碰到长时间操作都要另开线程,比如联网、数据库等等,不然就报 ANR
Registering
2015-11-09 20:02:49 +08:00
@yuriko 进程,进程,,不是线程
yuriko
2015-11-10 08:00:18 +08:00
@Registering 你都说了是 android 开发了,我才从 android 角度和你讨论这个问题,你结果却和我说线程和进程的区别, android 对进程已经封装了,你见过 android 没事在不同进程上开发么(虽然的确是有的)?
而且,从上下文来看,面试官说的显然是想说线程的,要解决的是异步问题而不是后天进程管理的问题。
a0000
2015-12-12 17:36:53 +08:00
@yuriko 嗯,感觉你没有 get 到楼主的需求。不知道面试官说的“显然”是想说线程的,这个“显然”的结论是怎么得出来的。

实力有限,不明白面试官问题的意图是什么,为啥不开始的时候问下他呢,也当学习了

确实是有场景是需要另开进程的,只不过平时自己工作中没有碰上这种场景

最近在做定位的功能,要在后台一直定位,但是很容易被系统杀死,所以在找解决 service 保活的方案,查到了下面这篇文章,就提到了另开进程保活推送服务。

在 Android 系统中, App 对于自己应用的生命周期是基本没有控制力,系统能在任意时候将你的进程杀死,且不会发出任何通知,也会在它认为合适的时候把你叫起来。进程前后台切换也同样不会给出任何通知。不过进程的生死控制也还是有一些规矩的,大体上来说就是进程占的资源越多(内存, CPU 时间等等),对于用户越不重要(前台进程->可视进程->服务进程->后台进程->空进程),越容易被干掉。因此,进程应当尽量小巧,且具有高的优先级。
如果一个应用本身就很小巧的话,一个进程就完全足够了,主线程负责 UI ,另起一个后台线程跑一个服务。而如果应用比较庞大的话,将推送服务独立出来则是一个更好的选择。主进程负责用户交互和主要的业务逻辑,占用庞大的资源,当退到后台后,随时被杀死都无所谓。推送进程则仅仅负责与服务器交互,保持最小限度的业务逻辑处理。
引用: http://zhoujianghua.com/2015/09/20/summary_of_im_android/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/234148

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX