多处理引发属性错误,为什么?

时间:2018-07-31 18:11:50

标签: python multithreading python-2.7 with-statement

出于某种我看不到的原因,此代码引发错误:AttributeError: __exit__

代码很简单:

import re, string, math, numpy, time, os.path, itertools, matplotlib, subprocess, shutil, sys, scipy.spatial.distance, multiprocessing, threading, ctypes
from functools import partial
from multiprocessing.sharedctypes import Value, Array
from multiprocessing import Process, Lock

def main():
    with multiprocessing.Pool(8) as myPool:
        print("1")

if __name__ == '__main__':
   main()

各种导入行用于我在多线程中使用的其他代码中使用的其他内容。但是,这是我尝试分析以学习绳索的简单“示例”代码。我认为打开with块会遇到一些麻烦,但是我不明白为什么。 Python 2.7是否不以这种方式实现多处理?这是我所看到的所有示例。我还有其他方法可以实现这样的东西吗?

我希望能够将一堆带有稍微不同输入的函数调用抛出到一组线程中,并让它们返回,但是如果我无法启动线程,那还有很长的路要走。

1 个答案:

答案 0 :(得分:1)

一些简单的修改为2.7标准,就可以了。

import  multiprocessing

def somefunc(x):
    print(x)

def main():
    myPool = multiprocessing.Pool(8):
    myPool.map(range(8))

if __name__ == '__main__':
   main()