Python将变量传递给线程

0 投票
2 回答
670 浏览
提问于 2025-04-17 06:12

我正在使用线程模块来控制通过套接字发送数据的线程,但我找不到合适的方法来把数据传递给线程使用。我尝试过一些方法,比如重写python threading.Thread.run(),但似乎没有成功。如果有人有建议,我很乐意尝试任何方法 :)

谢谢!

2 个回答

1

可以使用消息队列来解决这个问题。Python有一个叫做Queue的模块,可以用来在不同的线程之间传递数据。不过,如果你使用像0MQ这样的第三方库(可以在http://www.zeromq.org找到),那么你就可以把线程分成不同的进程,这样也能达到同样的效果。

使用多进程比使用多线程要简单一些,但如果你必须使用多线程,尽量避免锁定和共享数据。可以使用像Queue这样的现成模块,这样可以减少出现微妙错误的可能性。

2

你可能想错了方向。先不管是哪个线程在通过套接字发送数据。数据不需要到达线程,而是要到达负责通过套接字发送数据的逻辑部分。

举个例子,你可以有一个队列,用来存放需要通过套接字发送的内容。套接字的写入代码会从这个队列中取出消息,然后发送出去。其他的代码则负责把消息放到这个队列里。需要发送消息的代码不应该关心或者知道有一个线程在负责发送这些消息。

撰写回答