- 论坛徽章:
- 4
|
本帖最后由 linux_c_py_php 于 2012-11-18 11:21 编辑
这得用条件变量+互斥锁才能完成.
你需要对multiprocessing存在的理由与threading进行比较, 了解python的GIL, 并且知道multiprocessing的实现原理, 怎么实现进程间共享互斥锁和条件变量, 怎么共享普通变量, 怎么使用互斥锁与条件变量保证事件不会丢失, 要求较高.- [root@vps616 python]# cat main.py
- #python2.7.3
- #coding=utf-8
- from multiprocessing import Process, Lock, Condition, Value
- def callback(mutex, cond, val):
- mutex.acquire()
- while not val.value:
- cond.wait()
- print "sub proc done, exit..."
- mutex.release()
- if __name__ == "__main__":
- mutex = Lock()
- cond = Condition(mutex)
- val = Value('i', 0)
- proc = Process(target = callback, args = (mutex, cond, val))
- proc.start()
- mutex.acquire()
- val.value = 1
- cond.notify()
- mutex.release()
- proc.join()
复制代码 |
|