Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为计时器线程命名?_Python_Timer_Python Multithreading - Fatal编程技术网

Python 如何为计时器线程命名?

Python 如何为计时器线程命名?,python,timer,python-multithreading,Python,Timer,Python Multithreading,我使用一个循环的python计时器线程,并想给它起个名字。目前,python为每个新线程命名为thread-,并在每次新的计时器启动时递增该数字。我希望名称保持不变。基本Thread类支持命名为Timers,但不支持: class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *, daemon=None) 注意name=None属性,该属性在计时器

我使用一个循环的python计时器线程,并想给它起个名字。目前,python为每个新线程命名为
thread-
,并在每次新的计时器启动时递增该数字。我希望名称保持不变。基本
Thread
类支持命名为
Timer
s,但不支持:

class threading.Thread(group=None, target=None, name=None, args=(), kwargs={}, *,
                       daemon=None)
注意
name=None
属性,该属性在
计时器中不存在

class threading.Timer(interval, function, args=None, kwargs=None)

关于如何给计时器起个名字有什么想法吗?我想我可以派生我自己的
Timer
类并添加
name
,但我不认为python解释器会将其作为线程的名称…

Timer
是一个
thread
子类,它有名称,因此,您可以在创建自定义名称后,通过只为其
name
属性指定一个值来为其指定一个自定义名称,因此
Timer
构造函数不接受允许此操作的参数并不重要

如果您经常这样做,您可以编写一个相对简单的实用程序函数来自动执行此操作(或者派生您自己的
NamedTimer(Timer)
子类,其代码行数大致相同):

试试看:
从线程导入计时器
除恐怖外:
从线程导入_timeras Timer#Python Timer.name:'Fidgit'
timer.run()#会在几秒钟后打印“func()called”。

计时器
是一个
线程
子类,它有名称,因此您可以在创建一个自定义名称后,只需为其
名称
属性指定一个值即可,因此
计时器
构造函数不接受允许此操作的参数并不重要

如果您经常这样做,您可以编写一个相对简单的实用程序函数来自动执行此操作(或者派生您自己的
NamedTimer(Timer)
子类,其代码行数大致相同):

试试看:
从线程导入计时器
除恐怖外:
从线程导入_timeras Timer#Python Timer.name:'Fidgit'
timer.run()#会在几秒钟后打印“func()called”。

我寻找了同样的信息,并在这里登陆。我发现这样做的一种方法是:

timer = Timer(interval, function)
timer.setName('AnyTimerName')

我寻找了同样的信息,并在这里着陆。我发现这样做的一种方法是:

timer = Timer(interval, function)
timer.setName('AnyTimerName')

threading.\u Timer
是从
Thread
派生的。如果您查看源代码,就会发现定义自己的子类是多么容易,它与基类一样具有
name
属性。i、 e.调用
Thread.\uuuuu init\uuuuu(self,name=xxx)
在subcass的
\uuuu init\uuuuu()方法中。是的,谢谢,这很有意义。再次,从中的源代码开始,
线程
类本身中的
名称
是一个在内部访问私有属性
self的属性。因此,您可以通过属性的
@name.setter
方法来操作其值(甚至可以直接操作,尽管这破坏了封装)在实例化
计时器之后,或者从您自己的子类中实例化
对象。无需重载_Timer类:我只需使用其父属性'name'Timer将所需的指示符分配给计时器。name=my_name起作用,在父类文档中甚至声明使用它-中断封装,但在这种情况下,这似乎没问题。命名仅用于标识目的的字符串。它没有语义。可以为多个线程指定相同的名称。初始名称由构造函数设置。您误解了我的意思。使用(继承的)
name
属性很好-访问私有的
\uu name
属性会破坏封装。无论如何,很高兴听到你的问题解决了。Class
threading.\u Timer
是从
Thread
派生出来的。如果您查看源代码,就会发现定义自己的子类是多么容易,它与基类一样具有
name
属性。i、 e.调用
Thread.\uuuuu init\uuuuu(self,name=xxx)
在subcass的
\uuuu init\uuuuu()方法中。是的,谢谢,这很有意义。再次,从中的源代码开始,
线程
类本身中的
名称
是一个在内部访问私有属性
self的属性。因此,您可以通过属性的
@name.setter
方法来操作其值(甚至可以直接操作,尽管这破坏了封装)在实例化
计时器之后,或者从您自己的子类中实例化
对象。无需重载_Timer类:我只需使用其父属性'name'Timer将所需的指示符分配给计时器。name=my_name起作用,在父类文档中甚至声明使用它-中断封装,但在这种情况下,这似乎没问题。命名仅用于标识目的的字符串。它没有语义。可以为多个线程指定相同的名称。初始名称由构造函数设置。您误解了我的意思。使用(继承的)
name
属性很好-访问私有的
\uu name
属性会破坏封装。不管怎样,很高兴听到你的问题解决了。