1。 “安排节目”是什么意思?
这意味着您的程序应该能够在没有任何外部资源的情况下独立运行。共享文件会给你带来锁定问题,共享内存要么会做同样的事情,要么会因为多个进程同时修改数据而给你带来损坏。
这是一个坏主意的例子:
while some_queue_is_not_empty():
run_external_process(some_queue)
def external_process(queue):
item = queue.pop()
# do processing here
对比:
while some_queue_is_not_empty():
item = queue.pop()
run_external_process(item)
def external_process(item):
# do processing here
这样您可以避免由于多个进程获取相同的项目而导致队列锁定和/或损坏问题。
2。如何通过继承共享资源?
在 Windows 上,您不能。在 Linux 上,您可以使用父级打开的文件描述符,在 Windows 上,这将是一个全新的进程,因此除了给定的内容之外,您没有来自父级的任何内容。
示例复制自:http://rhodesmill.org/brandon/2010/python-multiprocessing-linux-windows/
from multiprocessing import Process
f = None
def child():
print f
if __name__ == '__main__':
f = open('mp.py', 'r')
p = Process(target=child)
p.start()
p.join()
在 Linux 上你会得到类似的东西:
$ python mp.py
<open file 'mp.py', mode 'r' at 0xb7734ac8>
在 Windows 上,您将获得:
C:\Users\brandon\dev>python mp.py
None