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