Python 使用NLTK-LazySequence进行多处理

Python 使用NLTK-LazySequence进行多处理,python,multithreading,nltk,Python,Multithreading,Nltk,以下代码: import multiprocessing from nltk.corpus import brown class ParamStruct: LS = None def run_ann(parameters): LS = parameters.LS print("len(LS): {0}".format(len(LS))) def main(): corpus = brown.sents() LS = corpus[0:250]

以下代码:

import multiprocessing
from nltk.corpus import brown

class ParamStruct:
    LS = None

def run_ann(parameters):
    LS = parameters.LS
    print("len(LS): {0}".format(len(LS)))

def main(): 
    corpus = brown.sents()
    LS = corpus[0:250]
    print(type(LS))

    # Prepare parameters for multithreading
    all_parameters = []
    for i in range(1):
        parameters = ParamStruct()
        parameters.LS = LS                  
        all_parameters.append(parameters)

    # Run experiments
    pool = multiprocessing.Pool(processes=2)
    pool.map(run_ann,all_parameters)
    pool.close()
    pool.join()

if __name__ == "__main__":
    main()
抛出错误:

<class 'nltk.util.LazySubsequence'>
Process PoolWorker-1:
Traceback (most recent call last):
  File "C:\Anaconda\lib\multiprocessing\process.py", line 258, in _bootstrap
    self.run()
  File "C:\Anaconda\lib\multiprocessing\process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Anaconda\lib\multiprocessing\pool.py", line 102, in worker
    task = get()
  File "C:\Anaconda\lib\multiprocessing\queues.py", line 378, in get
    return recv()
TypeError: __new__() takes exactly 4 arguments (1 given)

流程池工人-1:
回溯(最近一次呼叫最后一次):
文件“C:\Anaconda\lib\multiprocessing\process.py”,第258行,在_bootstrap中
self.run()
文件“C:\Anaconda\lib\multiprocessing\process.py”,第114行,正在运行
自我目标(*自我参数,**自我参数)
worker中第102行的文件“C:\Anaconda\lib\multiprocessing\pool.py”
task=get()
get中第378行的文件“C:\Anaconda\lib\multiprocessing\queues.py”
返回recv()
TypeError:\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
将行
LS=corpus[0:250]
替换为
LS=line(corpus[0:250])
修复了该问题。为什么?


我使用Python 2.7.10 x64。

到目前为止,我还没有找到任何答案。因此,如果有人有任何想法,我仍然感兴趣。到目前为止,我还没有找到任何答案。因此,如果有人有任何想法,我仍然感兴趣。