1
gouchaoer 2017-01-02 08:42:03 +08:00 via Android
第一,这是多进程
第二,这种情况异步 io 直接单进程完成,效率不知道高哪里去了 |
2
Allianzcortex 2017-01-02 08:45:37 +08:00 via iPhone
你这是多进程啊,应该用 dummy 的。
``` for p in jobs; p.start() q.join() for p in jobs: p.join() ``` 类似这样的 |
3
inksong OP @Allianzcortex 大神紧急求助!小弟对 python 不太熟求救,实在不太懂如何写,能再说的详细一点吗?十分感谢!
|
4
inksong OP @gouchaoer 打错了。。十分抱歉。大神异步 io 单进程怎么搞啊,小弟刚大一,对编程还不太熟。。。能再说的详细一点吗,小弟肯定认真钻研!
|
5
Allianzcortex 2017-01-02 08:50:24 +08:00 via iPhone
其实我想说这种情况用 threadpoolexecutor + future 简直再合适不过了,写过一篇半成品 blog http://allianzcortex.me/2014/06/22/python-multiprocess/ 不知道有没有帮助。 @gouchaoer 说的是 asyncio ?其实没怎么用过(噗。。)
|
6
inksong OP @Allianzcortex 额我只想用一个 JoinableQueue 来解决问题,我这个代码现在唯一的问题就是
jobs = [multiprocessing.Process(target=worker, args=(q,)) for i in xrange(100)] 这句里 q 的赋值我没太搞懂,我想把 iplist 赋值进去好让它一个一个处理,对 python 语法不熟。。。求点拨! |
8
rogerchen 2017-01-02 18:12:43 +08:00
这显然是 IO bound 的情况, 1G 带宽打满也用不了一个核。。。
epoll kqueue 是正解,开几千个线程也马马虎虎吧,起那么多进程就有点浪费了。 |
10
hoocok 2017-01-04 16:06:09 +08:00
V2Ex 不支持代码缩进的么??????以后直接贴代码图吧?还是 V2EX 不支持 Markdown 之类?
|
11
retanoj 2017-01-05 14:57:37 +08:00
|