【发布时间】:2014-06-03 21:53:32
【问题描述】:
我的系统是windows 7。我写了python程序来做数据分析。我使用multiprocessing 库来实现并行性。当我打开 windows powershell 时,输入python MyScript.py。它开始使用所有的 cpu 内核。但过了一会儿,CPU(所有内核)变得空闲。但是,如果我在 powershell 窗口中点击 Enter,所有内核都会恢复到满载状态。需要明确的是,该程序很好,并且已经过测试。这里的问题是 CPU 内核自己闲置了。
这不仅发生在我运行 Windows 7 Pro 的办公室计算机上,还发生在我运行 Windows 7 Ultimate 的家用台式机上。
程序的并行部分很简单:
def myfunc(input):
##some operations based on a huge data and a small data##
operation1: read in a piece of HugeData #query based HDF5
operation2: some operation based on HugeData and SmallData
return output
# read in Small data
SmallData=pd.read_csv('data.csv')
if __name__ == '__main__':
pool = mp.Pool()
result=pool.map_async(myfunc, a_list_of_input)
out=result.get()
我的功能主要是使用Pandas进行数据操作。
程序没有问题,因为我已经成功完成了几次程序。但我必须继续看它,当核心空闲时点击Enter。这项工作需要几个小时,我真的不会一直看。
这是windows系统本身的问题还是我的程序的问题?
顺便说一句,所有内核都可以访问存储在内存中的同一个变量吗?例如我有一个数据集mydata 在if __name__ == '__main__': 之前读入内存。此数据将用于myfunc。所有的核应该可以同时访问mydata吧?
请帮忙!
【问题讨论】:
标签: python windows powershell pandas multiprocessing