码迷,mamicode.com
首页 > Windows程序 > 详细

multiprocessing跨平台锁的使用(Windows问题)

时间:2016-12-21 21:02:12      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:参考   share   roc   for   pytho   com   win   process   unix   

在Windows上可能遇到,开启的子进程不会关闭的问题

 

参考multiprocessing官方文档:

Explicitly pass resources to child processes

On Unix a child process can make use of a shared resource created in a parent process using a global resource. However, it is better to pass the object as an argument to the constructor for the child process.

Apart from making the code (potentially) compatible with Windows this also ensures that as long as the child process is still alive the object will not be garbage collected in the parent process. This might be important if some resource is freed when the object is garbage collected in the parent process.

So for instance

from multiprocessing import Process, Lock

def f():
    ... do something using "lock" ...

if __name__ == ‘__main__‘:
    lock = Lock()
    for i in range(10):
        Process(target=f).start()

should be rewritten as

from multiprocessing import Process, Lock

def f(l):
    ... do something using "l" ...

if __name__ == ‘__main__‘:
    lock = Lock()
    for i in range(10):
        Process(target=f, args=(lock,)).start()

multiprocessing跨平台锁的使用(Windows问题)

标签:参考   share   roc   for   pytho   com   win   process   unix   

原文地址:http://www.cnblogs.com/playboysnow/p/6208764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!