Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在池辅助进程内使用time.time()时出现双重释放或损坏错误_Python_Python Multiprocessing - Fatal编程技术网

Python 在池辅助进程内使用time.time()时出现双重释放或损坏错误

Python 在池辅助进程内使用time.time()时出现双重释放或损坏错误,python,python-multiprocessing,Python,Python Multiprocessing,我在运行一些基本测试以掌握Python中的pool时出错: “/usr/bin/python3.5”中的错误:双重释放或损坏(fasttop):0x0000000001adf380 具有完整内存错误堆栈,并以以下内容结束: 密钥错误:139961995958016 我正在运行以下代码: from multiprocessing import Pool import time def f(x,t): print(time.time() - t) time.sleep(2)

我在运行一些基本测试以掌握Python中的pool时出错:

“/usr/bin/python3.5”中的错误:双重释放或损坏(fasttop):0x0000000001adf380

具有完整内存错误堆栈,并以以下内容结束:

密钥错误:139961995958016

我正在运行以下代码:

from multiprocessing import Pool
import time

def f(x,t):
    print(time.time() - t)
    time.sleep(2)
    return x*x

if __name__ == '__main__':
    with Pool(processes=2) as pool:
        time_start = time.time()
        l = [None]*4
        for i in range(4):
            l[i] = pool.apply_async(f, (10, time_start))

        l[-1].get(timeout=5*2)
        print(time.time()-time_start)
我真的不明白这里发生了什么。这与在f函数中使用time.time()有关,因为注释这一行可以解决问题,但除此之外,我不知所措


我正在运行Python 3.5.2(64位)。

看来您在Python实现中发现了一个bug。这个错误通常是glibc在两次尝试
释放
指针时抛出的,因此Python代码没有正确的理由这样做。

如果这是由于我没有很好地使用多处理和时间模块造成的,那么这真的算是一个bug吗?问题是,我在python文档中找不到任何关于这个问题的警告,但我发现很难相信我是第一个遇到这个问题的人,因为这两个模块都是标准库。如果它是一个bug,那么解释器应该负责处理所有与指针相关的疯狂行为。这也可能与发行版编译解释器和依赖库的方式有关。