我想当我分叉一个进程然后它共享导入的模块作为它的父进程,所以我测试如下:
lock2.py:
import multiprocessing
lock=multiprocessing.Semaphore()
a=[]
test.py:
#!/usr/bin/python
import multiprocessing
import lock2
import time
def func():
with lock2.lock:
print "start------"
time.sleep(5)
lock2.a.append(1)
print lock2.a
print "end--------"
for i in range(5):
p=multiprocessing.Process(target=func)
p.start()
调用test.py时,输出为:
start------
[1]
end--------
start------
[1]
end--------
start------
[1]
end--------
start------
[1]
end--------
start------
[1]
end--------
这很奇怪,对象lock
在除了对象a
之外的进程之间共享(因为它有效)(因为它应该是[1,1,1,1,1]
共享的)。
有人可以向我解释python如何在进程之间共享导入的模块。