【发布时间】:2018-11-27 16:45:00
【问题描述】:
我正在使用
Zope - 2.13.19
Python - 2.6.8
以下代码在手动运行时有效,但在外部方法中无效。 它引发以下错误。我在做一些概念上的错误吗?
Exception in thread Thread-3:
Traceback (most recent call last):
File "/opt/python2.6/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "/opt/python2.6/lib/python2.6/threading.py", line 484, in run
self.__target(*self.__args, **self.__kwargs)
File "/opt/python2.6/lib/python2.6/multiprocessing/pool.py", line 225, in _handle_tasks
put(task)
TypeError: expected string or Unicode object, NoneType found
import time
from multiprocessing import Pool
import logging
def func(name):
print 'hello %s,' % name
time.sleep(5)
print 'nice to meet you.'
def get_data():
pool = Pool(processes=2)
pool.map(func, ('frank', 'justin', 'osi', 'thomas'))
【问题讨论】:
-
External Method是什么意思? -
在 Zope 中,您无法访问所有 Python 功能,因为它使用了一种称为 Restricted Python 的东西。因此,要充分利用 Python 的功能,您需要编写外部方法,用 RestrictedPython 编写的脚本可以访问这些方法。例如,由于安全限制,不可能从 RestrictedPython 脚本中的多处理写入。所以我们创建了一个外部方法来进行导入,然后从 RestrictedPython 脚本中调用它。
-
也许您使用了另一种 Python 进行手动测试,而不是 ZOPE 使用的?假设外部意味着脚本位于
[ZOPE_DIRECTORY]/parts内部的某个位置,我会将其倒入自己的附加组件中,并通过导入表单的浏览器视图调用它。
标签: plone python-multiprocessing python-2.6 zope python-pool