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。到目前为止,我还没有找到任何答案。因此,如果有人有任何想法,我仍然感兴趣。到目前为止,我还没有找到任何答案。因此,如果有人有任何想法,我仍然感兴趣。