Python论坛  - 讨论区

标题:[python-chinese] 在python多线程编程中线程的相互调用

2007年06月20日 星期三 18:34

djf singlerdjf在gmail.com
星期三 六月 20 18:34:59 HKT 2007

建立一个全局字典,每次创建一个线程的时候,把线程实例保存到字典中去。

from SocketServer import ThreadingTCPServer, StreamRequestHandler
lkpool={}
class StreamHandler(StreamRequestHandler):
	def send(self,text):
	
	def handle(self):
		self.semawrite=threading.BoundedSemaphore(1)
		lkpool[self.client_address]=self
		
	def finish(self):
		del lkpool[self.client_address]

调用的时候可以这样,任何地方都可以调用。
lkpool[address].send(something)

On 6/18/07, 秦川 <anewrer at gmail.com> wrote:
>   是这样的,我在尝试用python些一个C/S的程序,目的是通过TCP连接实现局域网内
聊天的简单通信。
> 我的做法是,当客户端程序连接过来的时候,新建一个线程,开启新的TCP连接,然
后发送和接收都由这个线程来进行。我遇到的问题是,如果一个连接要向另一个连接发
送信息(即通过服务器中转一下),他就需要执行别的线程里面的发消息方法。
>
> 我不知道有什么办法可以直接调用。我用的蠢办法是在建立线程的时候把一个函数传
递到__init__中去,然后当收到信息的时候调用该函数(有点像C#的委托啊),
> 这个函数中使用threading.enumerate()获得活着的线程,然后调用线程里面的方法
来实现。
>   我不知道这个方法是不是合适的,也不清楚标准的做法是怎么样的。希望有经验的
前辈帮帮忙。谢谢。
>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2007年06月20日 星期三 22:42

秦川 anewrer在gmail.com
星期三 六月 20 22:42:04 HKT 2007

恩,这样确实很方便,limodou也是这么说的.
想不到在python中线程也可以简单的看作一个对象,写起来真是舒服.


在07-6-20,djf <singlerdjf在gmail.com> 写道:
>
> 建立一个全局字典,每次创建一个线程的时候,把线程实例保存到字典中去。
>
> from SocketServer import ThreadingTCPServer, StreamRequestHandler
> lkpool={}
> class StreamHandler(StreamRequestHandler):
>        def send(self,text):
>
>        def handle(self):
>                self.semawrite=threading.BoundedSemaphore(1)
>                lkpool[self.client_address]=self
>
>        def finish(self):
>                del lkpool[self.client_address]
>
> 调用的时候可以这样,任何地方都可以调用。
> lkpool[address].send(something)
>
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20070620/3900ba33/attachment.htm 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号