小编Qua*_*rgy的帖子

Python多处理的进程通信

我已经了解了Python多进程的管道/队列/共享ctypes对象/管理器,我想将它们与Linux的匿名管道,命名管道,共享内存,套接字等进行比较.我现在有以下问题

  • Python多处理的管道和队列模块基于匿名管道.它是否提供命名管道?

  • Python multiprocessing.sharedctypes是否支持独立的进程通信?我认为它只支持父子进程或兄弟进程通信.

  • 其中哪些只用于父子关系或兄弟情谊,可以在独立进程或不同主机之间进行通信?

  • 它们各自的特点是什么,我应该如何选择它们?

提前致谢.

python ipc pipe shared-memory multiprocessing

8
推荐指数
1
解决办法
821
查看次数

为什么不同的变量名会得到不同的结果(python2.7)?

在这段代码中:

results = []
for i in [1, 2, 3, 4]:
    def inner(y):
        return i
    results.append(inner)

for i in results:
    print i(None)  
Run Code Online (Sandbox Code Playgroud)

输出是"函数内部在0x107dea668"

如果我改变到其他盘符,例如:

results = []
for i in [1, 2, 3, 4]:
    def inner(y):
        return i
    results.append(inner)

for j in results:
    print j(None)
Run Code Online (Sandbox Code Playgroud)

输出为"4"


回答

results = []
for i in [1, 2, 3, 4]:
    def inner(y):
        print "in inner:%s " % id(i)
        return i
    results.append(inner)

# i -> 4
for i in results: …
Run Code Online (Sandbox Code Playgroud)

python for-loop

7
推荐指数
1
解决办法
213
查看次数

python的延迟评估和后期绑定?

何时进行懒惰评估?(生成器,如果是迭代器?),什么时候延迟绑定?(关闭,常规功能?)

    a = [1,2,3,4]
    b = [lambda y: x for x in a] 
    c = (lambda y: x for x in a) #lazy evaluation
    d = map(lambda m: lambda y:m, a) #closure
    for i in b:
        print i(None)
    # 4 4 4 4
    for i in c:
        print i(None)
    # 1 2 3 4 
    for i in d:
        print i(None)
    # 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

python lambda late-binding lazy-evaluation

5
推荐指数
1
解决办法
768
查看次数

Django `python manage.py runserver` 不支持 asyncio&aiohttp

在我的 Django 应用程序中,我需要将来自用户的请求代理到其他服务器。我使用asyncio/aiohttp client.

#user->request
.....

loop = asyncio.get_event_loop()
future = asyncio.ensure_future(self.run(t1, t2, t3))
loop.run_until_complete(future)

......
# response
Run Code Online (Sandbox Code Playgroud)

当我的 django 服务器以 启动时python manager.py runserver,当用户请求时出现以下错误。

运行时错误:线程“Thread-1”中没有当前事件循环。

但是当我开始时Gunicorn,一切都很好。

也许我应该使用new_event_loop

为什么没有问题Gunicorn

python django coroutine python-asyncio aiohttp

5
推荐指数
0
解决办法
238
查看次数

"iter()返回非迭代器"用于动态绑定`next`方法

为什么next我动态绑定到类的实例的这个方法失败并返回一个非迭代器对象?

from collections import Iterator
from collections import Iterable
from types import MethodType

def next(cls):
    if cls.start < cls.stop:
        cls.start += 1
        return cls.start
    else:
        raise StopIteration


class Foo(object):
    start, stop = 0, 5

    def __iter__(self):
        return self

if __name__ == "__main__":
    foo = Foo()
    setattr(foo, 'next', MethodType(next, foo, Foo))
    print hasattr(foo, "next")
    if isinstance(foo, Iterable):
        print "iterable"
    if isinstance(foo, Iterator):
        print "iterator"

    for i in foo:
        print i
Run Code Online (Sandbox Code Playgroud)

输出:

iterable
True
TypeError: iter() returned non-iterator of type …
Run Code Online (Sandbox Code Playgroud)

python iterator python-2.x python-2.7 python-internals

3
推荐指数
1
解决办法
348
查看次数