我试图理解Python中的线程.我看过文档和示例,但坦率地说,很多例子都过于复杂,我很难理解它们.
你如何清楚地展示为多线程划分的任务?
我正在调用Python中的一个函数,我知道它可能会停止并迫使我重新启动脚本.
如何调用该函数或我将其包装成什么,以便如果它花费的时间超过5秒,脚本会取消它并执行其他操作?
在Python文档中 它说:
线程可以标记为"守护程序线程".这个标志的意义在于,当只剩下守护进程线程时,整个Python程序都会退出.初始值继承自创建线程.
有没有人更明确地解释这意味着什么或一个实际的例子显示你想要将线程设置为何处daemonic?
为我澄清一下:
因此,如果您希望它们在主线程退出后继续运行,那么您唯一不会将线程设置为守护程序的时间是?
我正在研究python线程并遇到过join().
作者告诉我,如果线程处于守护进程模式,那么我需要使用,join()以便线程可以在主线程终止之前完成自己.
但我也看到他使用,t.join()即使t不是daemon
示例代码是这样的
import threading
import time
import logging
logging.basicConfig(level=logging.DEBUG,
format='(%(threadName)-10s) %(message)s',
)
def daemon():
logging.debug('Starting')
time.sleep(2)
logging.debug('Exiting')
d = threading.Thread(name='daemon', target=daemon)
d.setDaemon(True)
def non_daemon():
logging.debug('Starting')
logging.debug('Exiting')
t = threading.Thread(name='non-daemon', target=non_daemon)
d.start()
t.start()
d.join()
t.join()
Run Code Online (Sandbox Code Playgroud)
我不知道什么是使用,t.join()因为它不是守护进程,即使我删除它我也看不到任何变化
我有一个多线程Python程序和一个实用程序函数writeLog(message),它写出一个时间戳后跟消息.不幸的是,结果日志文件没有给出哪个线程正在生成哪个消息的指示.
我希望writeLog()能够在消息中添加一些东西来识别哪个线程正在调用它.显然我可以让线程传递这些信息,但这将是更多的工作.我可以使用一些与os.getpid()等效的线程吗?
我注意到经常建议使用具有多个线程的队列,而不是列表和.pop().这是因为列表不是线程安全的,还是出于其他原因?
如果我有一个无限循环的线程,有没有办法在主程序结束时终止它(例如,当我按Ctrl+ C)?
有什么之间的区别threading和thread模块在Python?
我如何让一个线程将一个元组或我选择的任何值返回给Python中的父元素?
我花了一整天的时间在Python中寻找最简单的多线程URL提取器,但我发现的大多数脚本都使用队列或多处理或复杂的库.
最后我自己写了一个,我作为答案报告.请随时提出任何改进建议.
我想其他人可能一直在寻找类似的东西.
python multithreading callback urlfetch python-multithreading
multithreading ×10
python ×10
callback ×1
concurrency ×1
daemon ×1
exit-code ×1
list ×1
python-3.x ×1
timeout ×1
urlfetch ×1