Python 达斯克没有';t似乎利用了内核/CPU

Python 达斯克没有';t似乎利用了内核/CPU,python,delay,dask,Python,Delay,Dask,我正在考虑dask的一个项目。我有一个大的3GB csv文件,包含50000个变量和60000条记录。直到运行时,我才知道需要哪些字段。我需要对数据集应用一个函数一百万次。我使用dask delayed快速应用函数。然而,当我使用Compute返回结果时,处理时间非常慢。我对达斯克期望太高了吗?或者我可以对计算循环做些什么来加速处理。感谢您提供的任何指导或帮助。见下面的程序。我最关心的是results=compute(answers)行 import dask import dask.dataf

我正在考虑dask的一个项目。我有一个大的3GB csv文件,包含50000个变量和60000条记录。直到运行时,我才知道需要哪些字段。我需要对数据集应用一个函数一百万次。我使用dask delayed快速应用函数。然而,当我使用Compute返回结果时,处理时间非常慢。我对达斯克期望太高了吗?或者我可以对计算循环做些什么来加速处理。感谢您提供的任何指导或帮助。见下面的程序。我最关心的是
results=compute(answers)

import dask
import dask.dataframe as dd
from dask import compute, delayed
import time
start_time = time.time()
dask.set_options(get=dask.threaded.get)

def get_base(input):
  return df['unwtd'].sum()

df = dd.read_csv("*.csv", sep="|", quoting=3, encoding = "utf_8", dtype = 'object', error_bad_lines=False, sample=(10000000))

df['unwtd']=1.0
df['Total'] = "_1"

values = [delayed(get_base)(x) for x in range(2)]


print("Getting Answers %s" % (time.time() - start_time))
answers = compute(*values, get=dask.threaded.get)


print("Getting Results %s" % (time.time() - start_time))
results = compute(answers)
print(results)
print("Done")
print("Total seconds %s " % (time.time() - start_time))

GIL(全局解释器锁)是一件坏事。@AluanHaddad不是。它有它的优点和缺点。@user204548您是否尝试过使用
dask.multiprocessing.get
?这就是我感到奇怪的地方。dataframe本质上是多线程的。我如何设置使dask.dataframe可以利用多进程?我认为dask和GIL不知何故一起工作。有没有办法配置python环境?