首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线程vs线程mo

线程vs线程mo
EN

Stack Overflow用户
提问于 2013-03-11 20:14:03
回答 1查看 96关注 0票数 0

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

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

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

尽管我阅读了关于这个主题(线程与线程)的文章,但我仍然无法理解threadthreading之间的区别。

请给我讲一篇关于这个题目的好文章。这些文档内容不多。

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

代码不准确,只是为了解释情况。

代码语言:javascript
复制
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)

我想将要合并的不同进程产生的y合并起来。这里有两个疑问:

  1. 由于变量名相同,是否必须将输出列表(y)作为参数传递?
  2. 假设是这样,并且所有处理过的列表都保存为y1,y2,y3,y4& y5,那么下游代码会被执行吗?如何确保所有进程都已结束?
EN

回答 1

Stack Overflow用户

发布于 2013-03-11 20:15:33

由于吉尔,线程或线程不会对您有所帮助。

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

你可能需要多处理

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15347725

复制
相关文章

相似问题

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