jjzjj

Threading

全部标签

python - .Semaphore() 和 .BoundedSemaphore() 有什么区别?

我知道threading.Lock()等于threading.Semaphore(1)。threading.Lock()是否也等于threading.BoundedSemaphore(1)?最近我看到了threading.BoundedSemaphore(),它们有什么区别?例如在以下代码片段中(对线程应用限制):importthreadingsem=threading.Semaphore(5)sem=threading.BoundedSemaphore(5) 最佳答案 Semaphore可以被释放的次数多于它被获取的次数,这将使它

python - 如何在pyqt中设置QThread的名称?

我正在使用QtCore.QThread(来自PyQt4)。为了记录,我还使用了以下格式化程序:logging.Formatter('%(levelname)-8s%(asctime)s%(threadName)-15s%(message)s')生成的日志是:DEBUG2012-10-0103:59:31,479Dummy-3my_message我的问题是我想更明确地知道哪个线程正在记录...Dummy-3对我来说不是最明确的名称....有没有办法为QtCore.QThread设置一个名称,日志模块可以使用它(作为LogRecord属性)以使日志更有意义?谢谢!

python - Python Threading.Event半忙等待更好的解决方案

我使用的是非常标准的Threading.Event:主线程到达一个运行循环的点:event.wait(60)其他人阻塞请求直到回复可用,然后发起:event.set()我希望主线程选择40秒,但事实并非如此。来自Python2.7源代码Lib/threading.py:#Balancingact:Wecan'taffordapurebusyloop,sowe#havetosleep;butifwesleepthewholetimeouttime,#we'llbeunresponsive.Theschemeheresleepsvery#littleatfirst,longerastime

python - 在 Python 中打印守护线程异常

Python不会打印来自守护线程中引发的异常的回溯消息。例如,此代码创建一个守护线程并在新线程中引发异常:deferror_raiser():raiseExceptionimportthreadingthread=threading.Thread(target=error_raiser)thread.daemon=Truethread.start()但不打印回溯。(它没有输出)。但是,如果线程没有设置为守护线程,Python将打印回溯。这是注释掉一行的相同代码:deferror_raiser():raiseExceptionimportthreadingthread=threading

Python:来自 `threading` 和 `multiprocessing` 的锁可以互换吗?

threading模块中的锁是否可以与multiprocessing模块中的锁互换? 最佳答案 您通常可以互换使用这两者,但您需要了解其中的差异。例如,multiprocessing.Event由命名信号量支持,它对应用程序下的平台敏感。Multiprocessing.Lock由Multiprocessing.SemLock支持-因此它需要命名信号量。本质上,您可以互换使用它们,但是使用多进程的锁会引入一些对应用程序的平台要求(即,它不能在BSD上运行:)) 关于Python:来自`th

python - 我如何解决NameError : name 'threading' is not defined in python 3. 3

我有以下程序,没有别的,python3.3。当我运行它时。我明白了NameError:name'threading'isnotdefined我用谷歌搜索,但给出的答案都没有解释我的情况。任何线索?谢谢!#!/usr/bin/pythonimportUtilitiesimportosimportsysimportgetoptimporttimefromqueueimportQueuefromthreadingimportThread_db_lock=threading.Lock()我也试过_db_lock=threading.Lock 最佳答案

python - 在进程中每隔一段时间执行一次任务

我想每2小时执行一次任务。Python在Threading模块中有一个Timer,但是它满足我的需求吗?我如何自己生成合适的计时器? 最佳答案 如果您希望您的代码每2小时运行一次,最简单的方法是使用cron或一个类似的调度程序,具体取决于您的操作系统如果您希望您的程序每n秒调用一个函数(在您的情况下为7200)你可以使用一个线程和event.wait。以下示例启动一个计时器每秒触发一次并打印一个字符串到标准输出importthreadingimporttimeclassTimerClass(threading.Thread):def

Python:TypeError:* 之后的参数必须是一个序列

我有这段代码,我尝试在新线程中发送UDP数据报importthreading,socketaddress=("localhost",9999)defsend(sock):sock.sendto("Message",address)print"sent"s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)threading.Thread(target=send,args=(s)).start()但是当我尝试将套接字作为函数的参数时,会抛出TypeError异常:ExceptioninthreadThread-1:Traceback(mostr

Python 单元测试和多线程

我正在使用python的unittest并想编写一个启动几个线程并等待它们完成的测试。线程执行一个函数,该函数具有一些unittest断言。如果任何断言失败,我希望测试失败。似乎并非如此。编辑:最小可运行示例(python3)importunittestimportthreadingclassMyTests(unittest.TestCase):deftest_sample(self):t=threading.Thread(target=lambda:self.fail())t.start()t.join()if__name__=='__main__':unittest.main()输

python - 如何在 python 中创建一个线程安全的全局计数器

我正在创建一个threading.Timer(2,work)运行线程。在每个工作函数内,在某些情况下,全局计数器必须递增,而不会发生冲突,以便在生成的工作线程中访问计数器变量。我试过Queue.Queue分配的计数器以及threading.Lock()。这是实现线程安全的全局增量变量的最佳方式。之前有人在这里提问:Pythonthreading.HowdoIlockathread? 最佳答案 不确定您是否已经尝试过这种特定的语法,但对我来说这一直很有效:定义一个全局锁:importthreadingthreadLock=thread