Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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 线程与线程mo_Python_Multithreading - Fatal编程技术网

Python 线程与线程mo

Python 线程与线程mo,python,multithreading,Python,Multithreading,关于这个话题有几个问题,但我找不到答案。甚至python文档也不是那么具有描述性 我的问题很简单:我想把一个巨大的列表分成几部分,并并行处理每一部分 因此,我的问题是,解释器是等到所有线程都完成后才启动程序的下游行(在我的例子中,是合并已处理列表),还是必须将下游进程定义为单独的线程并使用join 虽然我读了关于主题()的帖子,但我还是不太明白thread和threading之间的区别 请给我一篇关于这个话题的好文章。这些文件的信息量不大 PS(@zzk) 所以,即使我使用多处理,在所有进程结束

关于这个话题有几个问题,但我找不到答案。甚至python文档也不是那么具有描述性

我的问题很简单:我想把一个巨大的列表分成几部分,并并行处理每一部分

因此,我的问题是,解释器是等到所有线程都完成后才启动程序的下游行(在我的例子中,是合并已处理列表),还是必须将下游进程定义为单独的线程并使用
join

虽然我读了关于主题()的帖子,但我还是不太明白
thread
threading
之间的区别

请给我一篇关于这个话题的好文章。这些文件的信息量不大

PS(@zzk) 所以,即使我使用多处理,在所有进程结束后,我将如何执行公共代码?例如,5个过程产生5个列表。现在我必须合并这些列表,排序并写入一个文件

[代码不准确,仅用于解释情况]

我想合并从要合并的不同进程生成的
y
。 这里有两个疑问:

  • 由于变量名相同,我是否必须将输出列表(
    y
    )作为参数传递

  • 假设是这样,并且所有处理过的列表都保存为
    y1、y2、y3、y4
    y5
    ,则将执行下游代码。如何确保所有流程都已结束


  • 线程或线程将不会帮助您,因为

    在CPython中,全局解释器锁(GIL)是一个互斥锁,用于防止多个本机线程同时执行Python字节码。这个锁是必需的,主要是因为CPython的内存管理不是线程安全的

    你可能需要

    def fun(x,y):
        y=someprocessing(x) #type(y)=List
    
    if __name__ == '__main__':
        for i in listofprocesses:
            p = Process(target=fun, args=(i,y))
            p.start()
    
    # DOWNSTREAM CODE#
    yy=y1+y2+y3+y4+y5; 
    yy.sort()
    for j in yy:
        outfile.write(j)