多处理多线程管理器python

时间:2017-01-11 09:02:07

标签: python multithreading multiprocessing python-multiprocessing

我正在努力让多处理和多线程协同工作。我有以下代码,它来自https://docs.python.org/2/library/multiprocessing.html

中的多处理文档
from multiprocessing import Process, Manager
from threading import Thread


def foo():
  print ("hello world")

def simple_process(threads_manager):
  """Simple process that starts Threads
  """
  threads = []
  for i in range(10):
    t = Thread(target=foo, args=())
    t.start()
    t.join()
    threads.append(t)
  threads_manager['threads'] = threads

manager = Manager()
threads_manager = manager.dict()
p = Process(target=simple_process, args=(threads_manager, ), kwargs={})
p.start()
p.join()
threads = threads_manager.get('threads')

print (threads)

但是当我运行代码时,我收到以下错误。

hello world
Process Process-2:
Traceback (most recent call last):
  File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "multiprocessing_multithreading.py", line 17, in simple_process
    threads_manager['threads'] = threads
  File "<string>", line 2, in __setitem__
  File "/usr/lib/python2.7/multiprocessing/managers.py", line 758, in _callmethod
    conn.send((self._id, methodname, args, kwds))
TypeError: can't pickle thread.lock objects
None

我试图将simple_process函数生成的线程作为线程列表。 有人可以帮忙吗?

0 个答案:

没有答案