- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试在 Apache 2.2/mod_python 3.2.8 下运行一些 python 代码。最终代码执行 os.fork() 并生成 2 个独立的长期进程。这些进程中的每一个都必须创建一个单独的类实例,以避免并行流程中任何可能的冲突。
class Foo(object):
pass
kidprocs = []
for kid in ('kid1', 'kid2'):
pid = os.fork()
if pid:
# parent
kidprocs.append(pid)
time.sleep(5)
else:
# child
fooobj = Foo()
print "Starting %s in sub-process %s" % (kid, os.getpid())
print "Kid fooobj: %s" % repr(fooobj)
os._exit(0)
for kidproc in kidprocs:
os.waitpid(kidproc, 0)
那些打印输出看起来像这样:
Starting kid1 in sub-process 20906
foo obj: <__main__.Foo instance at 0xb7da5fec>
Starting kid2 in sub-process 20909
foo obj: <__main__.Foo instance at 0xb7da5fec>
如您所见,我为两个子流程获得了相同的对象。你知道为什么它在 mod_python 下会这样吗?有没有办法获得单独的实例?非常感谢。
最佳答案
repr()
函数给出的内存位置是虚拟内存中的地址,而不是系统全局内存中的地址。 fork() 返回的每个进程都有自己的虚拟内存空间,与其他进程完全不同。他们不共享内存。
编辑:Per brian 在下面的评论中,从技术上讲,它们确实共享内存,直到内核决定将它们隔离(当一个 child 写入共享内存的一部分时)。不过,行为实际上是相同的。
您的程序的结构是相同的,因此 python 在每个进程的不同虚拟内存存储中为每个子进程的每个相同对象使用相同的虚拟内存位置。
如果你实际修改对象的内容并测试它们,你会发现即使内存位置看起来相同,但两者是完全不同的对象,因为它们属于两个不同的进程。实际上,您无法修改一个(没有某种进程间通信来调解)。
关于python - 无法在 mod_python 下获取类的单独实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/204427/
刚刚使用 Python 2.4.3 在 CentOS 5 (Apache 2.2.3) 服务器上安装并配置了 mod_python 3.2.8。 Apache 可以很好地加载它。 我激活了 mpinf
我编写了一个 Django 应用程序,它利用 Python 线程创建网络蜘蛛,该蜘蛛作为一系列线程运行来检查链接。 当我使用 django 测试服务器(内置)运行此应用程序时,该应用程序运行良好,并且
我想在我们的真实世界的 Trac/mod_python 安装中启用侧日志记录,它已经变得非常慢(很多插件,没有那么多票/页面)。 我能否以某种方式代理请求对象,或添加python 跟踪(每次调用都有时
我的 Apache 日志中不断出现这些错误: [error] python_init: Python version mismatch, expected '2.6.5+', found '2.6.6
我是 Python 新手(我正在退出 PHP,因为它越来越糟糕),并且我正在努力移植我的旧代码。一件事: 我有一个带有函数index()和bar()的文件/foo.py,因此,通过发布者我可以访问ht
我正在 Apache 下运行 mod_python。如果我理解正确的话,每个 Apache 进程都运行自己的 Python 解释器。 在所有进程之间共享少量数据的最佳方式是什么?我在这里谈论的只是几百
我在 settings.py 文件中使用如下日志记录设置: logging.basicConfig(level=LOG_LEVEL, format=LOG_FORMAT); handler =logg
我想做一个简单的文件上传表单,我肯定完全没有能力。我已阅读文档和教程,但出于某种原因,我没有收到提交的表单数据。我写了尽可能少的代码来测试,但它仍然无法正常工作。有什么问题吗? def index()
我是 mod_python 和 Apache 的新手,在 GET 请求后我无法将文件返回给用户。我现在有一个非常简单的设置,并希望简单地打开文件并将其写入响应: from mod_python imp
完成安装 mod_python 后,我收到 500 Internal Server Error。我查了一下日志,它说:python_handler:无法获取/创建解释器。 然后我打开一个 python
我正在使用 mod_python 在 Apache 中运行 Trac。我正在开发一个插件,但不确定如何存储/缓存全局变量。 我是 python 的新手,用 google 搜索了这个主题,发现 mod_
我在让我的 Mod Python 正常工作时遇到问题。 我已经按照mod_python手册找到了here 这是我的 Apache 设置(我使用的是虚拟主机): ServerName host
我有一台使用 apache2 和 mod_python 的服务器,它似乎在短时间后重置了全局变量。在此之前,服务器和全局变量的所有功能都完全按照我的预期进行处理。 为了排除某些运行时错误的可能性(尽管
我正在尝试在 Apache 2.2/mod_python 3.2.8 下运行一些 python 代码。最终代码执行 os.fork() 并生成 2 个独立的长期进程。这些进程中的每一个都必须创建一个单
我在 debian 机器上安装了 mod_python,并安装了 python 2.4 和 2.6。我希望 mod_python 使用 2.6,但它找到的是 2.4。如何设置才能使用其他版本。 最佳答
让 python 的日志模块与 apache/modpython 一起工作的标准方法是什么? 我想调用 mylog.warn('whatever') 并导致调用 req.log_error(),其中
我一直在尝试为 mod_python 实现一个单例类。它在处理单个请求时工作正常,但当我从新请求调用时实例化一个新对象(如预期)。我怎样才能拥有一个跨请求具有公共(public)对象的类。它的生命周期
为什么 mod_python 是 oop 而 mod_php 不是? 例子:我们去 www.example.com/dir1/dir2 如果你使用 mod_python,apache 打开 www/d
我想在数据库中保留一些关于用户和位置的统计信息。例如,我想存储“Mozilla”、“Firefox”、“Safari”、“Chrome”、“IE”等...以及版本,可能还有操作系统。 我试图从 Pyt
我正在使用带有 Mod_python 的 Apache Web 服务器运行 Ubuntu。 Web服务器的根目录是/var/www我有一个用于上传文件的表单。上传的文件应通过Python脚本存储在/v
我是一名优秀的程序员,十分优秀!