首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pathos:__import__未找到

pathos:__import__未找到
EN

Stack Overflow用户
提问于 2017-12-01 14:49:18
回答 1查看 2.5K关注 0票数 0

我在一个虚拟环境中使用Python3.5在Linux上运行以下代码,并得到下面的错误。对于线程处理和列表理解部分来说,它工作得很好,但是我很难让多进程工作。

代码语言:javascript
复制
multiprocess.pool.RemoteTraceback: 
"""
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/multiprocess/pool.py", line 119, in worker
    result = (True, func(*args, **kwds))
  File "/usr/local/lib/python3.5/dist-packages/multiprocess/pool.py", line 44, in mapstar
    return list(map(*args))
  File "/usr/local/lib/python3.5/dist-packages/pathos/helpers/mp_helper.py", line 15, in <lambda>
    func = lambda args: f(*args)
  File "<input>", line 2, in squared
ImportError: __import__ not found
"""
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "<input>", line 2, in <module>
  File "/usr/local/lib/python3.5/dist-packages/pathos/multiprocessing.py", line 137, in map
    return _pool.map(star(f), zip(*args)) # chunksize
  File "/usr/local/lib/python3.5/dist-packages/multiprocess/pool.py", line 260, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "/usr/local/lib/python3.5/dist-packages/multiprocess/pool.py", line 608, in get
    raise self._value
ImportError: __import__ not found

下面是代码,它与线程池一起工作,并用于列表理解

代码语言:javascript
复制
import pathos
import numpy as np
import time

def squared(x):
    import time
    time.sleep(.5)
    return x ** 2


x = np.arange(400).reshape(50, 8)
p = pathos.pools.ProcessPool()
t = pathos.pools.ThreadPool()

st = time.time()
ans = [squared(i) for i in x]
et = time.time()
print(et-st)

st = time.time()
ans = p.map(squared, x)
et = time.time()
print(et-st)

st = time.time()
ans = t.uimap(squared, x)
list(ans)
et = time.time()
print(et-st)
EN

回答 1

Stack Overflow用户

发布于 2017-12-01 15:17:24

例如,我需要保存我的文件test.py,然后扇一个if 名称 == 'main':就在函数定义之后,然后从命令行运行pythontest.py,现在它工作得很好。

代码语言:javascript
复制
import pathos
import numpy as np
import time

def squared(x):
    # import time
    time.sleep(.5)
    return x ** 2


if __name__ == '__main__':
    x = np.arange(400).reshape(50, 8)
    p = pathos.pools.ProcessPool()
    t = pathos.pools.ThreadPool()

    st = time.time()
    ans = [squared(i) for i in x]
    et = time.time()
    print(et-st)

    st = time.time()
    ans = p.map(squared, x)
    et = time.time()
    print(et-st)

    st = time.time()
    ans = p.imap(squared, x)
    list(ans)
    et = time.time()
    print(et-st)

    st = time.time()
    ans = p.uimap(squared, x)
    list(ans)
    et = time.time()
    print(et-st)

    st = time.time()
    ans = t.map(squared, x)
    et = time.time()
    print(et-st)

    st = time.time()
    ans = t.imap(squared, x)
    list(ans)
    et = time.time()
    print(et-st)

    st = time.time()
    ans = t.uimap(squared, x)
    list(ans)
    et = time.time()
    print(et-st)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47595917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档