Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么多处理锁定失败?_Python_Multithreading_Locking_Multiprocessing - Fatal编程技术网

Python 为什么多处理锁定失败?

Python 为什么多处理锁定失败?,python,multithreading,locking,multiprocessing,Python,Multithreading,Locking,Multiprocessing,我只是在尝试从官方文档中获取信息,并注意到锁定似乎不像广告中所宣传的那样有效。发生了什么事 from multiprocessing import Process, Lock def f(l, i): l.acquire() for j in range(10000): print j, print l.release() if __name__ == '__main__': lock = Lock() for num in

我只是在尝试从官方文档中获取信息,并注意到锁定似乎不像广告中所宣传的那样有效。发生了什么事

from multiprocessing import Process, Lock

def f(l, i):
    l.acquire()
    for j in range(10000):
        print j,
    print
    l.release()

if __name__ == '__main__':
    lock = Lock()

    for num in range(10):
        Process(target=f, args=(lock, num)).start()
在Ipython笔记本中运行,输出如下:

271627172718012345678910


很简单。您真的认为可以从web应用程序中生成进程吗?因为事实就是这样。
不,你不能。如果webapps能够随意生成进程,那将是一个巨大的安全漏洞。他们不能在客户端完成,因为这一切都发生在浏览器的沙箱中。他们不应该在服务器端这样做,因为您可能希望以这种方式生成1000000个进程,然后呢?服务器应该自杀吗?
显然,
多处理
模块在IPython笔记本中被模拟,所有的事情实际上都发生在一个进程中——这个进程拥有锁,所以一切都很好。
普通Python和IPython解释器的输出是正常的,如果您不尝试通过webapp控制进程的有趣想法,它将尊重锁。

在linux2上的Python 2.7.6上运行良好。