我worte在python多重处理程序。我使用多重处理。Manager(). list()
在子进程中共享列表。首先,我在主进程中添加了一些任务。然后,启动一些子进程来完成共享列表中的任务,子进程也将任务添加到共享列表中。但我得到了一个例外如下:
Traceback (most recent call last):
File "/usr/lib64/python2.6/multiprocessing/process.py", line 232, in _bootstrap
self.run()
File "/usr/lib64/python2.6/multiprocessing/process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "gen_friendship.py", line 255, in worker
if tmpu in nodes:
File "<string>", line 2, in __contains__
File "/usr/lib64/python2.6/multiprocessing/managers.py", line 722, in _callmethod
self._connect()
File "/usr/lib64/python2.6/multiprocessing/managers.py", line 709, in _connect
conn = self._Client(self._token.address, authkey=self._authkey)
File "/usr/lib64/python2.6/multiprocessing/connection.py", line 143, in Client
c = SocketClient(address)
File "/usr/lib64/python2.6/multiprocessing/connection.py", line 263, in SocketClient
s.connect(address)
File "<string>", line 1, in connect
error: [Errno 2] No such file or directory
我发现了一些关于如何在python多处理中使用共享列表的内容,如下所示。但也有一些例外。我不知道例外的含义。公共列表和经理列表有什么区别?
代码如下:
nodes = multiprocessing.Manager().list()
lock = multiprocessing.Lock()
AMOUNT_OF_PROCESS = 10
def worker():
lock.acquire()
nodes.append(node)
lock.release()
if __name__ == "__main__":
for i in range(i):
nodes.append({"name":"username", "group":1})
processes = [None for i in range(AMOUNT_OF_PROCESS)]
for i in range(AMOUNT_OF_PROCESS):
processes[i] = multiprocessing.Process(taget=worker, args=())
processes[i].start()
问题是您的主进程在您启动所有辅助进程后立即退出,这将关闭您的Manager
。当您的Manager
关闭时,没有一个子节点可以使用您传递给它们的共享列表。您可以通过使用连接
等待所有子级完成来修复它。只要确保你实际上启动
你所有的进程之前调用加入
:
for i in range(AMOUNT_OF_PROCESS):
processes[i] = multiprocessing.Process(target=worker, args=())
processes[i].start()
for process in processes:
process.join()
问题内容: 我正在对GitHub上的此示例Angular2应用进行较小的修改,以使其使用Express.js而不是KOA。但是目前,当我尝试在FireFox中加载应用程序时,控制台中会显示以下错误: 当http请求触发路由器处理程序并返回时,Angular2应用程序开始加载,该处理程序返回,然后触发一系列嵌套依赖项的回调,其中一个引发错误并中途停止应用程序加载。 为了解决GitHub示例中的代码需
第一个问题:我得到以下结果: 文件"D:\Anaconda\Lib\site-包\请求\api.py",第70行,在get返回请求('get', url, params=params,**kwargs) 文件"D:\Anaconda\Lib\site-包\请求\api.py",第56行,在请求返回session.request(method=method, url=url,**kwargs) 文件
如果使用此功能删除目录中的所有文件。 但是每当我这样做时,我都会收到这个错误消息: 警告:rmdir(directory/12)[function.rmdir]:delete_文件中没有这样的文件或目录。php “directory/12”是我要删除的目录的正确名称。我不明白为什么它说它不存在,因为它存在!奇怪的是,即使我收到了错误信息,目录还是被删除了。 所以我在for循环之前添加了一行代码,它
问题内容: 我不知道为什么,但是每当我尝试传递到共享对象共享自定义类对象的方法时,都会收到此奇怪的错误。python版本:3.6.3 码: 错误: 这是什么问题 问题答案: 在这里找到了临时解决方案。我已经设法通过在 multiprocessing \ managers.py中 的AutoProxy的初始化程序中添加必要的关键字来解决此问题,但是我不知道此kwarg是否负责任何事情。
我试图熟悉kthread,并编写了一个非常简单的程序来用C语言测试它,指导如下:http://tuxthink.blogspot.com/2011/02/kernel-thread-creation-1.html.我在MacOSX上的威睿运行Ubuntu。 当我试图使用gcc (gcc test5.c -o test5.out)编译这个文件时,我得到“致命错误:linux/kthread.h:没有
我正在尝试使用gcc执行tualth01.c,并且我将gcc和tudelaus01.c与libavcodec和libavformat及其相关文件放在同一文件夹中,它给了我这个错误 致命错误:libavcodec/avcodec. h没有终止此类文件或目录编译 当我通过Ubuntu12.04中的终端运行<code>gcc-o tutorial01 tutorial 01.c-lavformat-la