线程中的join()函数

时间:2014-08-17 01:02:33

标签: python multithreading python-3.x python-multithreading

所以我最近尝试了解join()函数,但是我读过很多教程/文档,我似乎并不理解它。这里是否有人能够向我解释?

1 个答案:

答案 0 :(得分:2)

join多线程方法

关于线程和多线程的连接的使用,您将使用t.join()。非常简单,所有这一切都是为了你请求加入一个线程,等待线程终止其运行。您的intepreter将一直运行,直到所有线程终止。对于运行很长时间的线程,请创建一个守护进程!也就是说,通过执行以下操作来创建线程守护程序:

t= Thread(target=entry, args=(5,), daemon=True)
t.start()

daemon=True部分是该代码中唯一重要的部分,但我可以根据需要展开它。

这对于处理您运行的任何类型的后台任务非常有用。当主线程终止时,自动删除守护线程。

join字符串方法

要理解join()函数,请直观地思考Python的创建者通过命名它join()来对此命令做什么...他们想要创建一个可以加入的命令&# 34;东西"并灵活地做到这一点。想象一下"东西"是一堆字符串。现在假设你想把它们放在一起,并且以一种计算速度快的方式(稍后会更多)假设你有很多这些字符串,你做了什么?您可以使用join()以您希望的灵活方式组合字符串。通过灵活,您可以将字符串组合在一起,使它们用空格或逗号分隔,或者根本不用空格等。例如,考虑这个不同字符串的列表:

my_list = ['I', 'love', 'join', 'so', 'much'] 

现在让我们看一些使用join()灵活加入列表的例子(我们非常喜欢):

','.join(my_list)

产生输出:

'I,love,join,so,much'

或者试试这个:

''.join(my_list)

产生输出:

'Ilovejoinsomuch'

或者试试这个例子:

' '.join(my_list)

产生输出:

'I love join so much'

请注意,在所有这些情况下,您的字符串列表会一起连接成一个字符串,并注意如何指定您希望如何进行连接。现在join()背后的真正力量是你想要加入的对象可以是各种不同的类型:字典,列表,元组,生成器等。它不是非Pythonic;)实现所有这些不同的实体join()一次一个?这就是Python在能够将所有这些不同类型的结构连接在一起时非常突出的地方,而您只需坐下来告诉它您希望如何将对象连接在一起。这就是您的灵活性所在。

现在我想向您展示一个非常酷的例子,即能够使用生成器表达式将一堆不同的对象类型组合在一起:

my_list = ['I', 20, 'same']
print ' '.join(str(x) for x in my_list)

这将打印以下输出:

'I 20 same'

当然,您可以自由地使用其他方法将字符串连接在一起。如果您只有几个字符串要加入,并且您不需要像join()那样以计算速度快的方式执行此操作,则可以使用+号。例如:

string1 = 'my string'
string2 = 'your string'

print(string1 + ' ' + string2)
print('{} {}'.format(string1,string2))

产生输出:

'my string your string'
'my string your string'

但是如果你有很多这些字符串文字,你最好使用join()来组合它们,这样你就不会遇到内存和垃圾收集等问题。

顺便说一下,如果你想知道你得到了什么样的输出(它是一个字符串,还是世界上的那个?),只需输入例如:

print type('{} {}'.format(string1,string2)) 

您的输出将是<type 'str'>,您就会知道!

希望这有帮助!