首页 > 解决方案 > python中的多线程?

问题描述

我在python中有这样的代码:

c1=threading.Thread(target=GenQueue.producer(users_c1, 1), daemon=True).start()
c2=threading.Thread(target=GenQueue.producer_(users_c2, 2), daemon=True).start()

有了这个,我想同时开始这两个过程。换句话说,我想同时处理这两个函数,但运行程序我有以下响应:

c1
2.1834390934945658
c1
0.35337611584765205
c1
0.4002003042210114
c1
0.9425023162426116
c2
1.8306126431113086
c2
2.812330137689151
c2
4.292045901607802
c2
5.073242410662336
c2
1.1971281688107942
c2
1.5540286958713654
c2
0.5082889643899778

如您所见,编程首先将所有部分执行到函数c1,完成后开始执行函数到c2。

难道我做错了什么?

谢谢大家

标签: pythonmultithreading

解决方案


如何使用线程的示例:

t = threading.Thread(target=client_loop, args=(client, broker_p, port, token, 600, pub))

如您所见,目标参数是您的函数 (GenQueue.producer),args 是 (users_c1, 1),它们是您的目标函数采用的参数。

所以它应该是这样的:

c1=threading.Thread(target=GenQueue.producer, args = (users_c1, 1), daemon=True)
c1.start()
...
... 

推荐阅读