python线程以顺序处理数据

python线程以顺序处理数据,python,multithreading,Python,Multithreading,我想要两个线程,即thread1和thread2thread1将“c++”作为输入,输出['c'、'+'、'+'],将其放入列表中,即res; 而thread2将“python”作为输入,输出['p'、'y'、't'、'h'、'o'、'n',将其放入res。因此,在处理后,res将是[['c','+','+'],['p','y','t','h','o','n']],而不是[['p','y','t','h','o','n'],['c',','+','+']。逻辑类似于下面的代码,但我需要一个线程版

我想要两个线程,即
thread1
thread2
thread1
将“c++”作为输入,输出['c'、'+'、'+'],将其放入列表中,即
res
; 而
thread2
将“python”作为输入,输出['p'、'y'、't'、'h'、'o'、'n',将其放入
res
。因此,在处理后,res将是[['c','+','+'],['p','y','t','h','o','n']],而不是[['p','y','t','h','o','n'],['c',','+','+']。逻辑类似于下面的代码,但我需要一个线程版本代码

train_set = [
    'c++',
    'python',
]

def to_list(item):
    return list(item)

res = list(map(to_list, train_set))
print(res) # [['c', '+', '+'], ['p', 'y', 't', 'h', 'o', 'n']]
但这项任务可以通过以下方式轻松完成:

>>> train_set = [
...     'c++',
...     'python',
... ]
>>> res=[list(i) for i in train_set]
>>> res
[['c', '+', '+'], ['p', 'y', 't', 'h', 'o', 'n']]

您最好使用它,它是为在线程之间传递消息而设计的。特别是,如果在队列上调用
get()
方法,但队列当前为空,它将等待消息可用。两个工作线程中的每一个都需要一个队列,原始线程也需要第三个队列才能获得结果。恐怕我不会为你写代码了!但我链接到的页面上的示例说明了如何使用该类

python版本没有问题,执行线程的时间到了,我已经编辑了我的帖子,它将运行20次,并提供足够的时间来执行两个线程。@Dadep当然
print
语句在python 3上不起作用,所以您还没有在该版本上测试过。
>>> train_set = [
...     'c++',
...     'python',
... ]
>>> res=[list(i) for i in train_set]
>>> res
[['c', '+', '+'], ['p', 'y', 't', 'h', 'o', 'n']]