1
yuelang85 2016-03-15 20:51:29 +08:00
fork 的时候可以拿到子进程 pid ,可以向子进程发 signal 。
|
2
knightdf 2016-03-15 21:01:34 +08:00
这需要用进程来做?
|
3
lijianying10 2016-03-15 21:07:04 +08:00
方法有很多 Socket 通讯
如果是在同一台机器上可以用 Named pipe 高级一点就用 MPI 。 也许 Message Queue 也适合你。 这个是 Broker 的通讯方式。 如果你不想要 Broker 可以尝试 RPC ,类似 Thrift Grpc 都可以试试啊。 或者干脆基于事件分析,做个简单的 pub sub 也可以有。 以上这些总有一款适合你。当然我不是很了解您的情况。只是个人拙见。 |
4
wizardoz 2016-03-15 21:30:18 +08:00
不明觉厉
|
5
Alchemistxxd 2016-03-15 21:31:54 +08:00
看都看不懂
|
6
znoodl 2016-03-15 21:46:57 +08:00
我觉得多线程更好处理呢,可以用线程间通信更合适,多线程有共享数据,又独立运行,主线程退出整个程序(包括其他线程)都会退出
|
7
jimzhong 2016-03-15 21:57:24 +08:00
用管道或者 socket 吧
|
8
neoblackcap 2016-03-15 22:17:53 +08:00 via iPhone
RPC 方法实在太多,不过自己实现的话,套用专家的说法,请基于 TCP 。否则就选各类 MQ 吧
|
9
ryanking8215 2016-03-15 22:23:35 +08:00
pipe+signal
|
10
ipconfiger 2016-03-15 22:23:42 +08:00
用 Queue 啊
|
11
ipconfiger 2016-03-15 22:33:59 +08:00
给个栗子给你
from multiprocessing import Process, Queue import os, time, random # 写数据进程执行的代码: def write(q): for value in ['A', 'B', 'C']: print 'Put %s to queue...' % value q.put(value) time.sleep(random.random()) # 读数据进程执行的代码: def read(q): while True: if not q.empty(): value = q.get(True) print 'Get %s from queue.' % value time.sleep(random.random()) else: break if __name__=='__main__': # 父进程创建 Queue ,并传给各个子进程: q = Queue() pw = Process(target=write, args=(q,)) pr = Process(target=read, args=(q,)) # 启动子进程 pw ,写入: pw.start() # 等待 pw 结束: pw.join() # 启动子进程 pr ,读取: pr.start() pr.join() # pr 进程里是死循环,无法等待其结束,只能强行终止: print '所有数据都写入并且读完' |
12
alexapollo 2016-03-15 22:39:07 +08:00
明明有简单的方法,非要做的这么复杂
|
13
mckelvin 2016-03-16 08:01:12 +08:00 via iPhone
如果你要实现某个功能而非学习的目的,可以用 zeromq 做
|