我使用python3在Jupyter下Anaonda分布和使用sgt包2.0.3.系统-64位8GB。当我不使用多重处理时,SGT函数运行良好,但当我使用多重处理时,它会抛出一个错误。如果有任何系统依赖来使用多重处理功能,你能帮我吗?
from sgt import SGT
import numpy as np
import pandas as pd
import pandarallel
corpus = pd.DataFrame([[1, ["B","B","A","C","A","C","A","A","B","A"]],
[2, ["C", "Z", "Z", "Z", "D"]]],
columns=['id', 'sequence'])
sgt = SGT(kappa=1,
flatten=True,
lengthsensitive=False,
mode='default')
sgt.fit_transform(corpus)
但是,当我运行模式='多重处理'时,它会引发以下错误
sgt = SGT(kappa=1,
flatten=True,
lengthsensitive=False,
mode='multiprocessing')
sgt.fit_transform(corpus)
输出:
INFO: Pandarallel will run on 7 workers. INFO: Pandarallel will use standard multiprocessing data transfer (pipe) to transfer data between the main process and workers. --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in 3 lengthsensitive=False, 4 mode='multiprocessing') ----> 5 sgt.fit_transform(corpus) ~\AppData\Local\Continuum\anaconda3\lib\site-packages\sgt\sgt.py in fit_transform(self, corpus) 214 list(self.fit(x['sequence'])), 215 axis=1, --> 216 result_type='expand') 217 sgt.columns = ['id'] + self.feature_names 218 return sgt ~\AppData\Local\Continuum\anaconda3\lib\site-packages\pandarallel\pandarallel.py in closure(data, func, *args, **kwargs) 440 try: 441 pool = Pool( --> 442 nb_workers, worker_init, (prepare_worker(use_memory_fs)(worker),), 443 ) 444 ~\AppData\Local\Continuum\anaconda3\lib\multiprocessing\context.py in Pool(self, processes, initializer, initargs, maxtasksperchild) 117 from .pool import Pool 118 return Pool(processes, initializer, initargs, maxtasksperchild, --> 119 context=self.get_context()) 120 121 def RawValue(self, typecode_or_type, *args): ~\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py in __init__(self, processes, initializer, initargs, maxtasksperchild, context) 174 self._processes = processes 175 self._pool = [] --> 176 self._repopulate_pool() 177 178 self._worker_handler = threading.Thread( ~\AppData\Local\Continuum\anaconda3\lib\multiprocessing\pool.py in _repopulate_pool(self) 239 w.name = w.name.replace('Process', 'PoolWorker') 240 w.daemon = True --> 241 w.start() 242 util.debug('added worker') 243 ~\AppData\Local\Continuum\anaconda3\lib\multiprocessing\process.py in start(self) 110 'daemonic processes are not allowed to have children' 111 _cleanup() --> 112 self._popen = self._Popen(self) 113 self._sentinel = self._popen.sentinel 114 # Avoid a refcycle if the target function holds an indirect ~\AppData\Local\Continuum\anaconda3\lib\multiprocessing\context.py in _Popen(process_obj) 320 def _Popen(process_obj): 321 from .popen_spawn_win32 import Popen --> 322 return Popen(process_obj) 323 324 class SpawnContext(BaseContext): ~\AppData\Local\Continuum\anaconda3\lib\multiprocessing\popen_spawn_win32.py in __init__(self, process_obj) 87 try: 88 reduction.dump(prep_data, to_child) ---> 89 reduction.dump(process_obj, to_child) 90 finally: 91 set_spawning_popen(None) ~\AppData\Local\Continuum\anaconda3\lib\multiprocessing\reduction.py in dump(obj, file, protocol) 58 def dump(obj, file, protocol=None): 59 '''Replacement for pickle.dump() using ForkingPickler.''' ---> 60 ForkingPickler(file, protocol).dump(obj) 61 62 # AttributeError: Can't pickle local object 'prepare_worker..closure..wrapper'
这可能是由于熊猫
版本。检查您的熊猫版本是否为1. x。如果没有,升级你的熊猫
版本。
如何安装熊猫?
问题内容: 我的问题很简单:我有以下简单的类: 我正在尝试处理以下JSON: 显然,这里存在一个问题(“ blah”无法解析为int) 以前,Jackson抛出类似org.codehaus.jackson.map.JsonMappingException的内容:无法从字符串值’blah’构造java.lang.Integer的实例:不是有效的Integer值 我同意这一点,但是我想在某个地方注册一
问题内容: 我正在尝试在Python中的多处理库中使用队列。执行下面的代码后(打印语句起作用),但是在调用Queue上的join之后,这些进程没有退出,并且仍然存在。我如何终止其余过程? 谢谢! 问题答案: 尝试这个:
我正在尝试读取Spring Boot应用程序中的YAML属性文件。这是文件中的内容, 当我从YAML处理器获得该值时,对于Key1.Key3.Val2,该值被转换为57600。
问题内容: 有时候,当我从文件或用户那里得到输入时,我会得到一个带有转义序列的字符串。我想以与Python处理字符串文字中的转义序列相同的方式来处理转义序列。 例如,假设myString定义为: 我想要一个process执行此操作的函数(我称之为): 该函数可以处理Python中的所有转义序列(在上面的链接的表格中列出),这一点很重要。 Python是否具有执行此操作的功能? 问题答案: 正确的做
我正在尝试使用spring-kafka版本2.3.0编写kafka消费者。M2库。为了处理运行时错误,我使用SeekToSumtErrorHandler.class和DeadLetterPublishingRecoverer作为我的恢复器。这仅在我的消费者代码抛出异常时才正常工作,但在无法反序列化消息时失败。 我尝试自己实现ErrorHandler,我很成功,但使用这种方法,我自己最终编写了DLT
问题内容: 我是新手,发现错误处理非常冗长。我已经读过它的理由并大体上同意,但是似乎在某些地方似乎有更多代码来处理错误而不是实际工作。这是一个(人为的)示例,我在其中传送“ Hello world!”。进入cat并读取并打印输出。基本上,每一行都可以再处理三个错误,而我什至没有处理任何事情。 有没有惯用的,干净的方法来处理此问题?我只是觉得我在想什么。 问题答案: 显然,我们必须处理任何错误。我们